线性表的应用
#include <stdio.h> #include <stdlib.h> #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct{ int *elem; int length; int listsize; }SqList; void InitList_Sq(SqList &L){ L.elem = (int *)malloc(LIST_INIT_SIZE * sizeof(int)); //if(! L.elem)exit(OVERFLOW); L.length = 0; L.listsize = LISTINCREMENT; printf("初始化成功\n"); }//InitList_Sq void ListInsert_Sq(SqList L,int i,int e){ if(L.length>=L.listsize){ int *newbase = (int *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof (int)); //if(!newbase)exit(OVERFLOW); L.elem = newbase; L.listsize += LISTINCREMENT; } int *q = &(L.elem[i-1]); for(int *p = &(L.elem[L.length - 1]);p>=q;--p)*(p+1) = *p; *q = e; ++L.length; printf("成功\n"); }//ListInsert_Sq void ListDelete_Sq(SqList L,int i,int e){ int *p = &(L.elem[i-1]); e = *p; int *q = L.elem + L.length - 1; for(++p;p<=q;++p) *(p-1)=*p; --L.length; printf("你要删除的值:%d\n",e); }//ListDelete_Sq void main(){ int e=0; SqList L; int i=0; int k; printf("欢迎进入系统:\n"); int j=1; //scanf("%d\n",&j); InitList_Sq(L); while(j==1){ printf("插入值选1,删除选2.\n"); printf("请选择你想要进行的操作: \n"); scanf("%d", &k); if(k==1){ printf("请输入你想要插入的位置:"); scanf("%d", &i); printf("请输入你想要输入的数据: "); scanf("%d", &e); ListInsert_Sq(L,i,e); k=0;j=0; printf("请选择是否继续,继续选择1,退出选择2:\n"); scanf("%d", &j); } if(k==2){ printf("请输入你想要删除的数据的位置: "); scanf("%d", &i); ListDelete_Sq(L,i,e); k=0;j=0; printf("请选择是否继续,继续选择1,退出选择2:\n"); scanf("%d", &j); } } return 0; }