c语言中,如何实现链表,让链表的数据域类型是多个结构体。

Python030

c语言中,如何实现链表,让链表的数据域类型是多个结构体。,第1张

链表有多种形式,如:单向链表,双向链表,单向循环链表,双向循环链表。将链表结构定义为list_t,则该类型中一定(至少)存在一个指向下一节点的指针list_t

*next除了这个指针,list_t

中可以包含其它类型的数据,包括结构体变量。比如:typedef

struct

{

struct

usr_struct

data

list_t

*next

}

list_t

先搞清楚基本概念,不懂再问

//    返回一个带头结点的且具有五个结点的链表 

link *initLink()

{

    link * p=(link*)malloc(sizeof(link))    //    创建头结点 

    link * temp=p    //    使用变量temp在下面创建结点时指向链表末端 

    for(int i=1 i<5 i++)

    {

        link *a=(link*)malloc(sizeof(link))    //    创建一个结点 

        a->elem=i        //    为结点赋值 

        a->next=NULL    //    指针域暂时赋为NULL,若后面还要创建结点的话再修改 

        temp->next=a    //    因为temp指向链表末端,即最后一个结点

                        //    故该节点指针域应指向刚才创建的结点 a 

        temp=temp->next//    连接好以后,temp指向下一个结点(刚才创建的结点a,现在是链表末端) 

    }

    return p    //    返回头结点 

}