#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MaxSize 15
//代码注释详见另一篇使用malloc()函数动态分配内存空间的博文
typedef struct {
int data[MaxSize];
int length;
}SeqList;
int InitList(SeqList *L){//由于在定义结构体SeqList时使用了普通变量所以无需编写DestroyList()函数
L->length=0;
printf("该顺序表已被创建\n");
return 1;
}
void PrintList(SeqList L){
for(int i=0;i<L.length;i++)
printf("该顺序表第:%d个元素为:%d \n",i+1,GetElem(L,i+1));
}
int length(SeqList L){
return(L.length);
}
int ListInsert(SeqList *L,int i, int e){
if(i<1||i>L->length+1)
return 0;
if(L->length>=MaxSize)
return 0;
for(int j=L->length;j>=i;j--){
L->data[j]=L->data[j-1];
}
L->data[i-1]=e;
L->length++;
printf("该顺序表成功在:%d处插入元素:%d\n",i,e);
return 1;
}
int ListDelete(SeqList *L,int i,int *e){
if(i<1||i>L->length)
return 0;
(*e)=L->data[i-1];
for(int j=i;j<L->length;j++)
L->data[j-1]=L->data[j];
L->length--;
printf("该顺序表成功在:%d处删除元素:%d\n",i,*e);
return 1;
}
int GetElem(SeqList L,int i){
if(i<1||i>length(L))
return 0;
return(L.data[i-1]);
}
int LocateElem(SeqList L,int e){
if(L.length==0) return 0;
int i=0;
for(;i<L.length;i++)
if(L.data[i]==e)break;
return (i+1);
}
int main()
{
SeqList L;
int discard;
int desert;
InitList(&L);
printf("\n");
ListInsert(&L,1,9);
printf("\n");
ListInsert(&L,1,9);
printf("\n");
ListInsert(&L,length(L)+1,5);
printf("\n");
ListInsert(&L,length(L)+1,2);
printf("\n");
ListInsert(&L,length(L)+1,7);
printf("\n");
ListInsert(&L,length(L)+1,7);
printf("\n");
PrintList(L);
printf("\n");
ListDelete(&L,1,&discard);
printf("\n");
ListDelete(&L,length(L),&desert);
printf("\n");
PrintList(L);
printf("元素5在该顺序表中的位置为%d\n\n",LocateElem(L,5));
printf("删除过的元素为%d,%d\n\n",desert,discard);
return 0;
}
<数据结构>静态分配内存的顺序表实现(C语言)
最新推荐文章于 2022-09-04 16:27:33 发布