读书人

数据结构之链表的兑现

发布时间: 2012-11-03 10:57:42 作者: rapoo

数据结构之链表的实现

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;        }            }    }

?

?

读书人网 >编程

热点推荐