《数据结构C语言版线性表源代码》由会员分享,可在线阅读,更多相关《数据结构C语言版线性表源代码(6页珍藏版)》请在金锄头文库上搜索。
1、#include #include #include #include #define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define OK 1#define ERROR -1#define OVERFLOW -1#define ENDFLAG 0typedef int Status;typedef int ElemType;#define OUTFORMAT %d #define INFORMAT %dtypedef structElemType *elem;int length;int listsize;SqList;Status Ini
2、tList(SqList *L)L-elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L-elem) / 如果没有分配成功exit(OVERFLOW); /退出,显示()内内容L-length=0;L-listsize=LIST_INIT_SIZE;return OK;Status Inputdata(SqList *L) /SqList *L 定义首节点的地址ElemType temp,*newbase;printf(nInput the data of the sequencial list:nNote:0 is the
3、 ending flag:n);scanf(INFORMAT,&temp);while(temp!=ENDFLAG)if(L-length=L-listsize)newbase=(ElemType *)realloc(L-elem, (L-listsize+LISTINCREMENT)*sizeof(ElemType);/扩大空间,把旧的地址拷贝到新空间if(!newbase) exit(OVERFLOW);L-elem=newbase;L-listsize+=LISTINCREMENT;L-elemL-length+=temp;scanf(INFORMAT,&temp);return OK;
4、Status ListInsert(SqList *L,int i,ElemType e)ElemType *p,*q,*newbase;if(iL-length)return ERROR;if(L-length=L-listsize) Newbase =( elemType*)realloc(L-elem,(L-listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase) exit(OVERFLOW);L-elem=newbase; L-listsize+=LISTINCREMENT;q=&(L-elemi-1);for(p=&(L-elemL-
5、length-1);p=q;-p)*(p+1)=*p;*q=e;+L-length;return OK;void MyDisplay(SqList L)int i;for(i=0;iL.length;i+)printf(OUTFORMAT,L.elemi);printf(n);void main(void)SqList L;ElemType temp;int i;if(!InitList(&L) /如果初始化失败 printf(To initialize the sequencial list failn);getch(); /如果失败,按任意键退出exit(0);if(!Inputdata(&L)printf(To input the data of the sequencial list failn);getch();exit(0);MyDisplay(L);printf(Input the data that you want to insert:);scanf(INFORMAT,&temp);printf(Input the insert_location:);scanf(%d,&i);if(!ListInsert(&L,i,temp)printf(To insert failn);getch();exit(0);MyDisplay(L);getch();