链表操作(1)

来源:互联网 发布:使用迅雷网络异常 编辑:程序博客网 时间:2024/06/05 00:35

0.数据结构定义

struct Node;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;struct Node{    ElementType Element;    Position Next;};

1. 判断链表是够为空

//return true if L is emptyint isEmpty(List L){    return L->Next==NULL;}

2.判断是否是最后一个位置

int isLast(Position p, List L){    return p->Next == NULL;}

3.查询

Position find(ElementType x, List L){    Position p;    p=L->Next;    while(P!=NULL && P->Element != X){        P=P->Next;    }}

4.删除

void delete(Element X, List L){    Position P, tmpCell;    P=FindPrevious(X, L);    if(!isLast(P, L)){        tmpCell=P->Next;        P->Next=tmp->Next;        free(tmpCell);    }}Position FindPrevious(Element X, List L){    Position P;    P=L;    while(P->Next!=NULL&&P->Next->Element!-X){        P=P->Next;    }}

5.插入

void Insert(ElementType X, List L, Position P){    Position TmpCell;    TmpCell=malloc(sizeof(struct Node));    if(TmpCell==NULL){        FatalError("out of space!!!");    }    TmpCell->Element=X;    TmpCell->Next=P->Next;    P->Next=TmpCell;}
1 0
原创粉丝点击