美文网首页数据结构和算法分析
数据结构与算法-C语言实现单链表,以及单链表的常用方法

数据结构与算法-C语言实现单链表,以及单链表的常用方法

作者: 伪学识青年 | 来源:发表于2019-06-07 22:53 被阅读17次

    C语言知识点提要:

    Struct:Struct 内可放置各种类型的数据

    格式为:

    Struct TagName {

    .............(元素类型 元素名称)

    }

    不同Struct内的成员名称可以相同

    也可使用以下方法来定义Struct

    struct {......}  x,y,z;

    上面定义的TagName可用于之后再定义,例如:

    struct TagName tg;

    可使用struct-mame.member来打印值。

    若定义了一个struct类型的指针变量,则可使用“->"符号来访问变量

    例如:

    struct TagName *p;

    p->member-of-structure

    具体代码如下:

    struct Node;

    typedef struct Node *PtrToNode;

    typedef PtrToNode List;

    typedef PtrToNode Position;

    int IsEmpty(List L);

    int IsLast(Position P , List L);

    Position Find(int X,List L);

    List MakeEmpty(List L);

    void Delete(int X,List L);

    Position FindPrevious(int X,List L);

    void Insert(int X,List L,Position P);

    void DeleteList(List L);

    struct Node

    {

        int Element;

        Position Next;

    };

    VOid DeleteList(List L){

    /*

    删除现有链表

    并释放列表元素占用空间

    */

        Position P,TmpCell;

        P=L->Next;

        L->Next=NULL;

        while(P!=NULL){

            TmpCell=P->Next;

            free(P);

            P=TmpCell;

        }

    }

    /*

    插入元素到链表的指定位置

    */

    void Insert(int X,List L,Position P){

        TmpCell=malloc(sizeof(struct Node))

        TmpCell->Element=X;

        TmpCell->Next=P->Next;

        free(P->Next)

        P->Next=TmpCell;

        return P;

    }

    /*

    定位到当前元素的前一个元素

    */

    void FindPrevious(int X,List L){

        Position P;

        P=L->Next;

        while(P->Next!=NULL && P->Next->Element!=X){

            P=P->Next;

        }

        return P;

    }

    void Delete(int X,List L){

    /*

    删除当前链表中的某个元素

    */

        Position P;

        P=L->Next;

        while(P->Next!=NULL && P->Element!=X)

            P=P->Next;

        TmpCell=P->Next;

        P->Next=TmpCell->Next;

        free(TmpCell);

    }

    List MakeEmpty(List L){

    /*

    清空当前的链表

    */

        Position P;

        P=malloc(sizeof(struct Node))

        if(P==NULL){

            printf("%s","error")

        }

        P->Element=NULL;

        P->Next=NULL;

        return P;

    }

    /*

    定位到单链表中的某个值的位置

    */

    Position Find(int X,List L){

        Position P;

        P=L->Next;

        while(P->Next != NULL && P->Element!=X){

            P=P->Next;

        }

        return P;

    }

    /*

    判断单链表是否为空

    */

    int IsEmpty(List L){

        return L->Next==NULL;

    }

    /*

    判断当前位置是否最后一个元素

    */

    int IsLast(Position P,List L){

        return P->Next==NULL;

    }

    相关文章

      网友评论

        本文标题:数据结构与算法-C语言实现单链表,以及单链表的常用方法

        本文链接:https://www.haomeiwen.com/subject/zyxbxctx.html