#include " ../include.h " typedef struct LNode ... { ElemType e; struct LNode *next;} LNode, * LinkList;Status InitList(LinkList * l) ... { *l = (LNode *)malloc(sizeof(LNode)); if(!*l) ...{ exit(OVERFLOW); } (*l)->next = NULL; return OK;} Status DestoryList(LinkList * l) ... { LNode *p = *l; LNode *next = NULL; while(p) ...{ next = p->next; free(p); p = next; } return OK;} Status ListInsert(LinkList l,ElemType e, int i) ... { LNode *p = l; int j = -1; while(p && j < i - 1) ...{ p = p->next; j++; } if(!p || j != i - 1) ...{ return INFEASIBLE; } LNode *q = (LNode *)malloc(sizeof(LNode)); if(!q) ...{ exit(OVERFLOW); } q->e = e; q->next = p->next; p->next = q; return OK;} Status ListDelete(LinkList l,ElemType * e, int i) ... { LNode *p = l; int j = -1; while(p && j < i - 1) ...{ p = p->next; j++; } if(!p || j != i - 1) ...{ return INFEASIBLE; } LNode *q = p->next; *e = q->e; p->next = q->next; free(q); return OK;} int Locate(LinkList l,ElemType e) ... { LNode *p = l->next; int i = 0; while(p) ...{ if(p->e == e) ...{ return i; } p = p->next; i++; } return INFEASIBLE;} void Print(LinkList l) ... { LNode *p = l->next; while(p) ...{ printf("%d ",p->e); p = p->next; } printf(" ");} int main() ... { LinkList l; printf("Init list..."); InitList(&l); printf("initialed. "); printf("Insert elements: 12 5 33 98 21 3 22 "); ListInsert(l,12,0); ListInsert(l,5,1); ListInsert(l,33,2); ListInsert(l,22,3); ListInsert(l,3,3); ListInsert(l,21,3); ListInsert(l,98,3); printf("Result: "); Print(l); printf("Locate elements: 21 33 12 "); printf("Result: "); printf("%d ",Locate(l,21)); printf("%d ",Locate(l,33)); printf("%d ",Locate(l,12)); printf("Delete elements: 3 33 12 "); ElemType e; ListDelete(l,&e,5); ListDelete(l,&e,2); ListDelete(l,&e,0); printf("Result: "); Print(l); printf("Destory list..."); DestoryList(&l); printf("destoried. ");}