//今天看了数据结构中线性表的顺序存储结构部分,写了一个简单的结构 #include<stdio.h> #define ListMaxSize 50 typedef struct Arr { int arr[ListMaxSize]; int cnt; //当前有效元素个数 }SqList; void InitList(SqList *); //初始化 int Isempty(SqList *); //判断是否为空 int Isfull(SqList *); //判断是否为满 void PrintList(SqList *); //线性表的遍历 int ListInsert(SqList *,int ,int *); //指定位置插入一个元素 int ListDelete(SqList *,int ,int *); //删除指定位置的元素 int Getelem(SqList *,int ,int *); //获取指定位置的元素 int main() { int val; SqList a1; InitList(&a1); PrintList(&a1); ListInsert(&a1,1,1); ListInsert(&a1,1,2); ListInsert(&a1,1,3); PrintList(&a1); if(ListDelete(&a1,1,&val)) printf("删除的元素为%d\n",val); else printf("删除失败\n"); PrintList(&a1); if(Getelem(&a1,1,&val)) printf("GET值为%d\n",val); else printf("GET元素失败!\n"); return 0; } //初始化 void InitList(SqList *pa1) { pa1->cnt=0; return; } //判断表是否为空 int Isempty(SqList *pa1) { if(pa1->cnt==0) return 1; else return 0; } ///判断表是否为满 int Isfull(SqList *pa1) { if(pa1->cnt<ListMaxSize) return 0; else return 1; } //遍历 void PrintList(SqList *pa1) { int i; if(Isempty(pa1)) printf("表为空!\n"); else { for(i=0;i<pa1->cnt;i++) printf("%d ",pa1->arr[i]); printf("\n"); } } //指定位置插入一个元素 int ListInsert(SqList *pa1,int i,int e) { int j; if(i<1||i>pa1->cnt+1) return 0; if(Isfull(pa1)) return 0; for(j=pa1->cnt;j>=i;j--) pa1->arr[j]=pa1->arr[j-1]; pa1->arr[j]=e; pa1->cnt++; return 1; } //删除指定位置的元素,用val传参返回删除元素值 int ListDelete(SqList *pa1,int i,int *pval) { int j; if(i<1||i>pa1->cnt) return 0; *pval=pa1->arr[i-1]; for(j=i;j<pa1->cnt;j++) pa1->arr[j-1]=pa1->arr[j]; pa1->cnt--; return 1; } //GET指定位置元素,用val传参返回 int Getelem(SqList *pa1,int i,int *pval) { if(i<1||i>pa1->cnt) return 0; else { *pval=pa1->arr[i-1]; return 1; } }
(C语言)线性表的顺序存储
猜你喜欢
转载自blog.csdn.net/vipchen1997/article/details/80708153
今日推荐
周排行