数据结构之链表的实现
1、顺序链表
?? ? ??//.h文件
//.h文件typedef char ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LinkList;//.cpp文件#include "LinkList.h"void InitList(LinkList *&L){ L=(LinkList*)malloc(sizeof(LinkList)); L->next=NULL;}void DestroyList(LinkList* &L){ LinkList *p=L,*q=p->next; while (q!=NULL) { free(p); p=q; q=p->next; } free(p);}int ListEmpty(LinkList* L){ return L->next==NULL;}int ListLength(LinkList* L){ LinkList *p=L;int i=0; while (p->next!=0) { i++; p=p->next; } return i;}void DispList(LinkList* L){ LinkList *p=L; while (p->next!=NULL) { p=p->next; printf("%c",p->data); } printf("\n");}int GetElem(LinkList* L,int i,ElemType &e){ int j=0; LinkList *p=L; while(j<i&&p!=NULL){ j++; p=p->next; } if(p==NULL){ return 0; }else{ e=p->data; return 1; } }int LocateElem(LinkList *L,ElemType e){ LinkList *p=L->next; int n=1; while (p!=NULL&&p->data!=e) { p=p->next; n++; } if(p==NULL){ return 0; }else{ return n; } }int ListInsert(LinkList* &L,int i, ElemType e){ int j=0; LinkList *p=L; while (j<i-1&&p!=NULL) { j++; p=p->next; } if(p==NULL){ return 0; }else{ LinkList *q=(LinkList *)malloc(sizeof(LinkList)); q->data=e; q->next=p->next; p->next=q; return 1; }}int ListDelete(LinkList* &L,int i,ElemType &e){ int j=0; LinkList *p=L,*q; while(j<i-1&&p!=NULL){ j++; p=p->next; } if(p==NULL){ return 0; }else{ if(p->next!=NULL){ q=p->next; p->next=q->next; free(q); return 1; }else{ return 0; } } }?
?