线性表:零个或多个数据元素的有限序列。
线性表的顺序存储结构
#define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; int length; }SqList;
插入操作
Status ListInsert(SqList *L,int i,ElemType e) { int k; if(L->length == MAXSIZE) return ERROR; if(i<1 || i>L->length+1) return ERROR; if(i<=L->length) { for(k=L->length-1;k>=i-1;k--) L->data[k+1]=L->data[k]; } L->data[i-1]=e; L->length++; return OK; }
线性表的链式存储结构
/*单链表存储结构*/ typedef struct Node { ElemType data; struct Node *next; } Node; /*定义 LinkList*/ typedef struct Node *LinkList;
查询
Status GetElem(LinkList L, int i,ElemType *e) { int j; LinkList p; p=L->next; j=1; while(p&&j<i) { p=p->next; ++j; } if(!p||j>i) return ERROR; *e=p->data; return OK; }
在第i个结点位置之前插入新的数据元素e
Status ListInsert(LinkList *L,int i,ElemType e) { int j; LinkList p,s; p=*L; j=1; while(p&& j<i) { p=p->next; ++j; } if(!p ||j>i) return ERROR; s=(LinkList)malloc(sizeof(Node)); s->data=e; s->next=p->next; p->next=s; return OK; }