线性表的结构:顾名思义,像一条线一样,有首尾元素,中间元素都拥有且只有一个前驱元素和后驱元素。 #include <stdio h=""> #include <malloc h=""> #include<stdlib h=""> #define OK 1 #define ERROR 0 #define LIST_INIT_SIZE 100 //初始分配量 #define LIST_INCREMENT 10 //分配增量 typedef int Status; //线性表的动态分配顺序存储结构 typedef struct { int *Elem; //存储空间的基址 int Len; //当前长度 int ListSize; //当前分配的存储容量 }SqList; //构造一个空的线性表L Status InitList(SqList *L) { //int i; L->Elem = (int *)malloc(LIST_INIT_SIZE * sizeof(int)); if(!L->Elem) { printf("初始化失败!"); exit(0); } L->Len = 0; L->ListSize = LIST_INIT_SIZE; return OK; } //-------获取某个元素--------- Status GetElem(SqList L,int i,int *e) { if(L.Len == 0 || i < 1 || i > L.Len) return ERROR; //*e = L.Elem[i - 1]; *e = *(L.Elem + i - 1); return OK; } //--------------插入某个元素----------------- Status ListInsert(SqList *L,int i, int e)//第二个元素前插入元素e { int k; if(L->Len == LIST_INIT_SIZE ) return ERROR; if(i < 1 || i > L->Len + 1) return ERROR; if(i <= L->Len) { for( k = L->Len - 1;k >= i - 1; k--) L->Elem[k+1] = L->Elem[k]; } L->Elem[i - 1] = e; L->Len++; return OK; } //---------------删除某个元素------------------- Status ListDelete(SqList *L,int i,int *e) { int k; if(L->Len == 0) //线性表为空 return ERROR; if( i <1 i=""> L->Len) return ERROR; //删除的位置不正确 *e = L->Elem[i - 1]; if(i < L->Len) { for( k = i;k < L->Len;k++) L->Elem[k-1] = L->Elem[k]; } L->Len--; return OK; } int main(void) { SqList L; int k,a; InitList(&L); L.Len = 5; for(k = 0;k < L.Len; k++) scanf("%d",&L.Elem[k]); // GetElem(L,2,&a); // printf("%d\n",a); // ListInsert(&L,3,9); ListDelete(&L,4,&a); printf("%d\n",a); for(k = 0; k < L.Len; k++) printf("%d ",L.Elem[k]); printf("\n"); return 0; } </1></stdlib></malloc></stdio>