成长 进步 分享

Great works are performed not by strength, but by perseverance

C语言链表的创建

链表是一种基础的数据结构,在多种编程语言中都有链表的概念。在C语言中,链表的创建涉及到结构体指针的概念。链表的功能强大,可以动态进行内存分配,在节点中定义多种数据类型,并实现任意的添加、删除、插入。

完整的链表包含有头指针,一般用head表示,存放指向下一个节点的地址。而链表的中间节点分为头结点和一般节点两部分,其中一般节点包含数据域和指针域两个部分,数据域用来存放对应节点需要存放的那种类型的数据,而指针域同样用来存放指向下一个节点的地址。这样,从头结点一直指向下一个节点,直到指向最后一个节点之后,这个节点不再指向任意节点,就称这个节点为表尾。这个节点的指针域放入"NULL",表示整个链表的结束。

链表功能强大,可以进行链表的创建、修改、删除、插入、输出、排序、反序等操作。本文先介绍如何进行包含有n个节点的链表的创建。代码如下所示:

//创建链表节点
typedef struct node{
            int data;               //数据域中的数据
            sturct node *next; //指针域中的存放下一个节点的地址
}Linklist;

使用typedef创建链表后,通过->来定义链表中的data以及*next。下面是如何创建一个节点数为n的链表。代码如下:

Linklist *create_Linklist(int n){
          Linklist *head,*node,*end;                            //定义头结点,中间节点,尾部节点
          head = (Linklist*)malloc(sizeof(Linklist));        //为头结点申请内存
          end = head;
          for (int i=0;i<n;i++){                                    //从第0个节点创建中间节点,一直创建到第n个
                   node = (Linklist*)malloc(sizeof(Linklist));
                   scanf("%d", &node->data);                   //为链表节点输入数据
                   end->next = node;                               //将当前节点的指针域指向下一节点
                   end = node;                                         //将当前节点指针移向下一节点
          }
          end->next = NULL;                                        //结束链表创建
          return head;
}

以上就是关于在C语言中进行链表创建的介绍,今后会继续在链表的使用方面进行描述。

往期回顾:http://blog.hpscrc.com/tensorflow-padding-function/

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注