对应每一章的数据结构代码1

#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
typedef int ElemType;
typedef struct
{ int *elem; //基地址
int length; //元素个数
int listsize; //地址空间大小
} SqList;
void InitList ( SqList *L ) //构造线性表 空表
{ L->elem= (int *)malloc(LIST_INIT_SIZE *sizeof(int));//100个int类型的空间开辟给int,传给L->elem
if ( !L->elem) {
exit(1);
}
L->length = 0;
L->listsize =LIST_INIT_SIZE;
}
int ListInsert_sq(SqList *L,int i,int e) //插入元素
{ int j;
if(i<1||i>L->length+1)
return 0;
if(L->length>=L->listsize)
return 0;
for(j=L->length;j>=i;j–)
L->elem[j]=L->elem[j-1];
L->elem[i-1]=e;
L->length++;
return 1;
}
void DispList(SqList *L)//输出线性表元素
{
int i;
if(L->length==0)
printf(“error”);
for(i=0;ilength;i++)
printf("%d “,L->elem[i]);
}
int ListDelete_sq(SqList *L,int i,int *e) //删除第i个元素
{ int j;
if(i<1||i>L->length) //i值不合法
return 0;
*e=L->elem[i-1]; //取出删除的元素
for(j=i;j<=L->length;j++)
L->elem[j-1]=L->elem[j];//元素前移
L->length–; //顺序表长度-1
return 1;
}
int LocateElem(SqList *L,ElemType e)//查找与e相等的元素的逻辑位序
{
int i =0;
while(ilength&&L->elem[i]!=e)//查找与e相等的元素下标
i++;
if(i>=L->length)//判断是否找到
return 0;
else return i+1;
}
void main(){
SqList L;
int t,k,e;
int i,x,w;
InitList(&L);//初始化线性表
i=1; //给线性表插入值
printf(“输入的数超过100结束输入:\n”);
scanf(”%d",&t);
while(t<=100) //通过插入函数给线性表赋值
{ ListInsert_sq(&L,i,t);
scanf("%d",&t);
i++;
}
DispList(&L); //输出线性表
i=3;
ListDelete_sq(&L,i,&e);//删除第i个元素
printf(“输出删除第i个值后的线性表:\n”);
DispList(&L); //输出线性表
k=LocateElem(&L,5);//查找值为5的元素逻辑位序
printf("\n%d\n",k);
}

发布了41 篇原创文章 · 获赞 1 · 访问量 1254

猜你喜欢

转载自blog.csdn.net/xiaoqiang616717/article/details/100637437