您的位置:首页 > 理论基础 > 数据结构算法

考研数据结构:C语言代码实现之线性表(顺序表)

2019-04-06 00:19 281 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_42678370/article/details/89049572
  • 头文件
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 100
  • 结构体类型及定义
typedef struct{
int data[Maxsize];
int length;
}SqList;
  • 顺序表创建
SqList* initlist(){
SqList *l;
l=(SqList*)malloc(sizeof(SqList));
l->length=0;
return l;
}
  • 顺序表按位置插入
int listinsert(SqList *L,int i,int e){
if(i<1||i>L->length+1)
return 0;
if(L->length>=Maxsize)
return 0;
int j;
for(j=L->length;j>=i;j--)
L->data[j]=L->data[j-1];
L->data[i-1]=e;
L->length++;
return 1;
}
  • 顺序表按位置删除
int listdelete(SqList *L,int i,int *e){
if(i<1||i>L->length)
return 0;
if(L->length<1)
return 0;
*e=L->data[i-1];
int j;
for(j=i;j<L->length;j++)
L->data[j-1]=L->data[j];
L->length--;
printf("这次删除的数据是:%d\n",*e);
return 1;
}
  • 输出顺序表
void printlist(SqList *L){
int i,k;
for(i=0;i<=L->length-1;i++){
k=L->data[i];
printf("%d",k);
}
}
  • 按值查找顺序表元素
int findx(SqList *L,int x,int *e){
int i=0;
while(i<L->length+1&&L->data[i]!=x)
i++;
if(i>L->length){
printf("we can not find this number!\n");
return 0;
}
*e=i+1;
printf("数据%d的位置在%d\n",x,*e);
return 1;
}
  • 测试代码
void main(){
SqList *L;
int k;
L=initlist();
listinsert(L,1,1);
printlist(L);
printf("\n");
listinsert(L,1,2);
printlist(L);
printf("\n");
listinsert(L,1,3);
printlist(L);
printf("\n");
listinsert(L,1,4);
printlist(L);
printf("\n");
listinsert(L,1,5);
printlist(L);
printf("\n");
listdelete(L,3,&k);
printlist(L);
printf("这次删除的数据是:%d\n",k);
findx(L,4,&k);
printf("数据位置在:%d\n",k);
findx(L,3,&k);

}

(第一次写博客,主要是记录自己学习数据结构当中写好的一些c代码,以便查看,大家可以参考讨论…不足之处请指出)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: