今天小编给各人带来c语言难点--链表的讲解,一步一步教你从零起头写C语言链表---构建一个链表。
为什么要进修链表?
链表次要有以下几大特征:
1、处理数组无法存储多种数据类型的问题。
2、处理数组中,元素个数无法改动的限造(C99的变长数组,C++也有变长数组能够实现)。
3、数组挪动元素的过程中,要对元素停止大范畴的挪动,很耗时间,效率也不高。
先来感性的熟悉一下链表,我们先来熟悉下简单的链表:
从那幅图我们得出以下信息:
那个简单链表的构成:
头指针(Header),若干个节点(节点包罗了数据域和指针域),最初一个节点要指向空。
实现原理:头指针指向链表的第一个节点,然后第一个节点中的指针指向下一个节点,然后依次指到最初一个节点,如许就构成了一条链表。
接下来看看链表的数据构造:
struct list_node
int data ; //数据域,用于存储数据
struct list_node *next ; //指针,能够用来拜候节点数据,也能够遍历,指向下一个节点
那么若何来创建一个链表的一个节点呢?
我们写个法式演示一下:
#include stdio.h
#include stdlib.h
#include string.h
struct list_node
int data ;
struct list_node *next ;
typedef struct list_node list_single ;
int main(void)
list_single *node = NULL ; //1、起首,当然是定义一个头指针
node = (list_single *)malloc(sizeof(list_single)); //2、然后分配内存空间
if(node == NULL){
printf("malloc fair!
memset(node,0,sizeof(list_single)); //3、清一下
node-data = 100 ; //4、给链表节点的数据赋值
node-next = NULL ; //5、将链表的指针域指向空
printf("%d
",node-data);
free(node);
return 0 ;
那么,那仅仅只是创建一个链表中的一个节点,为了都雅,我们把创建节点封拆成函数,以后想创建几个节点,我们就能够频频挪用一个函数来创建,会很便利:
list_single *create_list_node(int data)
list_single *node = NULL ;
node = (list_single *)malloc(sizeof(list_single));
if(node == NULL){
printf("malloc fair!
memset(node,0,sizeof(list_single));
node-data = 100 ;
node-next = NULL ;
return node ;
接下来在法式上完成的法式:
#include stdio.h
#include stdlib.h
#include string.h
struct list_node
int data ;
struct list_node *next ;
typedef struct list_node list_single ;
list_single *create_list_node(int data)
list_single *node = NULL ;
node = (list_single *)malloc(sizeof(list_single));
if(node == NULL){
printf("malloc fair!
memset(node,0,sizeof(list_single));
node-data = 100 ;
node-next = NULL ;
return node ;
int main(void)
int data = 100 ;
list_single *node_ptr = create_list_node(data); //创建一个节点
printf("node_ptr-data=%d
",node_ptr-data); //打印节点里的数据
printf("node_ptr-next=%d
",node_ptr-next);
free(node_ptr);
return 0 ;
施行成果 :
如许我们就完成一个链表节点的创建了,那么它如今的样子如下图:
链表的构造里,数据存储了100,因为那个链表只要一个节点,所以它的指针域指向了NULL。
写在最初
关于怎么快速学C/C++,能够加下小编的C/C++进修群:,814+974+917,邀请码:云志,不管你是小白仍是大牛,小编我都欢送,不按期分享干货,欢送初学和进阶中的小伙伴。
天天晚上20:00城市开曲播给各人分享C/C++游戏编程进修常识和道路办法,群里会不按期更新最新的教程和进修办法,最初祝所有法式员都可以走上人生巅峰,让代码将梦想照进现实