线性表的顺序动态存储——C语言实现简单函数

来源:互联网 发布:热血江湖源码 编辑:程序博客网 时间:2024/05/21 06:19
#include<stdio.h>#include <stdlib.h>#define ERROR 0#define OK 1#define TRUE 1#define FALSE 0#define OVERFLOW -2#define INFEASIBLE -1#define LIST_INT_SIZE 100#define LISTINCREMENT 10typedef struct{int *e;int length;int listsize;}SqList;int InitList(SqList *L){L->e=(int *)malloc(LIST_INT_SIZE*sizeof(int));if(!L->e) exit(OVERFLOW);L->length=0;L->listsize=LIST_INT_SIZE;return OK;}int ListInsert(SqList *L,int i,int e){if(i<1||i>L->length+1) return ERROR;if(L->length>=L->listsize){int *newbase=(int *)realloc(L->e,(L->listsize+LISTINCREMENT)*sizeof(int));if(!newbase) exit(OVERFLOW);L->e=newbase;L->listsize += LISTINCREMENT;}int *q =&(L->e[i-1]);int *p;for(p=&(L->e[L->length-1]);p>=q;--p) *(p+1)=*p;*q=e;++L->length;}int deleteList(SqList *L,int i,int *e){if(i<1||i>L->length) return ERROR;int *p=&(L->e[i-1]);*e = *p;int *q=L->e+L->length-1;for(++p;p<=q;++p)*(p-1)=*p;--L->length;return OK;}int visitList(SqList L){int i;for(i=0;i<L.length;i++)printf("%d\t",L.e[i]);printf("\n");return OK;}int main(){SqList L;InitList(&L);int i;for(i=1;i<5;i++)ListInsert(&L,i,i);visitList(L);deleteList(&L,2,&i);printf("%d\n",i);visitList(L);return 0;}

原创粉丝点击