首页 > 编程知识 正文

C语言链表是什么,链表C语言

时间:2023-05-05 17:19:45 阅读:248374 作者:4343

链表
链表(linked list)是一种很有用的数据存储方式。是线性的。依照我的理解就是很多个点连接起来,其中每个点包括两部分一部分是数据,一部分是指针(指向下一个节点的指针)。如下图:

在上图中每一个方框所代表的就是一个节点。每个节点中的指针都指向下一个节点的地址。
以上就是链表的概念,那么在C语言中如何创建一个链表呢?
首先我认为在学习链表之前要学会创建指向结构的指针这个操作,下面我们就说一下怎么创建指向结构的指针,并且如何对其中的元素进行操作。

#include<stdio.h>#include<stdlib.h>int main(){struct Linked_list{int number;char c;};struct Linked_list *L; /*至此我们就创建了一个指向结构体Linked_list的指针,但是这个结构体并未分配存储空间。我们接下来就要对其分配一个内存空间 */L=(struct Linked_list*)malloc(sizeof(struct Linked_list));/*这里我们就对L这个指针分配了一个可以容纳整型和字符型大小的内存空间,这个操作在链表中也会出现 */ (*L).number=5;printf("%d",(*L).number);L->number=6;printf("%d",(*L).number); /*L->number(*L).number以上两种操作是等价的,都是访问这个Linked_list这个结构体中的成员*/return 0; } 如果大家对结构体不太了解的话可以翻一翻这份专栏中第一个文章。

下面我们进入主题,如何创建一个链表,我们创建链表的时候需要实例化三个结构体指针head、new、end。其中head是这个链表的头指针是链表的开始,我们一般对这个节点不存储数据。end是这个链表结尾。new用来创建一个新的节点。

#include<stdio.h>#include<stdlib.h>int main(){typedef struct person{int number;struct person *next;//这里实例化了person结构体next是指向这个结构体的指针 }Link_list;//这里struct person 与Link_list等价 Link_list *head=NULL;//这里建立链表的头,就是实例化结构体head是一个指针指向这个结构体Link_list *new=NULL;//这里用来获得新的节点Link_list *end=NULL;//这个指针是链表的最后一个元素/*以上我们就创建好了一个链表中所需要的的三个要素 */new=(Link_list*)malloc(sizeof(Link_list));//在这里我们给new这个指针分配了一块内存,相当于创建了一个新的节点 head=new;//我们将这个新的节点的地址给了head并且没添加任何元素。 end=head; //因为这个链表中只有一个元素因此首和尾是一个节点 new=(Link_list*)malloc(sizeof(Link_list));new->number=5;//我们在第二个节点里面给number赋予了一个值 end->next=new;//我们将第一个节点中的指针指向了新创建的节点 end=new;//重新给尾节点赋值 end->next=NULL;//第二个节点中的指针指向一个NULL意思是空指针 /*以上我们创建了一个两个节点的链表,其中第一个节点只有指向第二个节点的指针,没有保存数据,第二个节点存储了一个整型数据,并且有一个指向空类型的指针。*/ return 0;} 在上面我们创建了一个两个节点的链表(一般的链表不会怎么少,这里我们作为例子就创建两个节点)。最后希望大家在阅读过程中指出我的错误或者对我的内容进行补充。
见缝插针游戏的实现途径

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。