数据结构复盘——线性表的顺序存储

    科技2022-08-11  92

    //线性表的顺序存储 #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 #define ERROR -1 //定义 typedef struct LNode *PtrtoNode; struct LNode{ int data[MAXSIZE]; int Last; }; typedef PtrtoNode List; //创建 List MakeEmpty(){ List L; L=(List)malloc(sizeof(struct LNode)); L->Last=-1; return L; } //查找 void Find(List L,int X){ int i = 0; while(i<=L->Last&&L->data[i]!=X){ i++; } if(i>L->Last) printf("查找数据不存在"); else printf("查找数据下标为:%d",i);; } //插入 bool Insert(List L,int n,int i){ int j; if(L->Last==MAXSIZE-1){ printf("表满!"); return false; } if(i<-1 || i>L->Last+2){ printf("插入的位置不合法!"); return false; } for(j=L->Last;j>=i-1;j--){ L->data[j+1]=L->data[j]; } L->data[i-1]=n; L->Last++; return true; } //删除 bool Delete(List L,int i){ int j; if(i<-1 || i>L->Last+1){ printf("删除的位置不合法!"); return false; } for(j=i;j<=L->Last;j++){ L->data[j-1]=L->data[j]; } L->Last--; return true; } //求长度 void Length(List L){ printf("数组长度为:%d",L->Last+1); } //主函数 void main(){ List L=MakeEmpty(); int n,num,find,del; //插入 printf("请输入要输入多少个数:"); scanf("%d",&num); for(int i=1;i<=num;i++){ scanf("%d",&n); Insert(L,n,i); } //输出 for(int j=0;j<num;j++){ printf("%d ",L->data[j]); } printf("\n"); //查找 printf("请输入要查找的数:"); scanf("%d",&find); Find(L,find); printf("\n"); //删除 printf("请输入要删除的数:"); scanf("%d",&del); Delete(L,del); //再次输出 for(j=0;j<=L->Last;j++){ printf("%d ",L->data[j]); } printf("\n"); Length(L); printf("\n"); }
    Processed: 0.011, SQL: 8