链表
链表(linked list)是一种很有用的数据存储方式。是线性的。依照我的理解就是很多个点连接起来,其中每个点包括两部分一部分是数据,一部分是指针(指向下一个节点的指针)。如下图:
在上图中每一个方框所代表的就是一个节点。每个节点中的指针都指向下一个节点的地址。
以上就是链表的概念,那么在C语言中如何创建一个链表呢?
首先我认为在学习链表之前要学会创建指向结构的指针这个操作,下面我们就说一下怎么创建指向结构的指针,并且如何对其中的元素进行操作。
下面我们进入主题,如何创建一个链表,我们创建链表的时候需要实例化三个结构体指针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;} 在上面我们创建了一个两个节点的链表(一般的链表不会怎么少,这里我们作为例子就创建两个节点)。最后希望大家在阅读过程中指出我的错误或者对我的内容进行补充。