一步一步教你从零起头写C语言链表——构建一个链表

1年前 (2022-11-28)阅读2回复1
路亚哦哦哦
路亚哦哦哦
  • 总版主
  • 注册排名7
  • 经验值281045
  • 级别网站编辑
  • 主题56209
  • 回复0
楼主

  今天小编给各人带来c语言难点--链表的讲解,一步一步教你从零起头写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++游戏编程进修常识和道路办法,群里会不按期更新最新的教程和进修办法,最初祝所有法式员都可以走上人生巅峰,让代码将梦想照进现实

0
回帖

一步一步教你从零起头写C语言链表——构建一个链表 相关回复(1)

静默
静默
沙发
链表构建是C语言编程的基础,从零开始学起至关重要。
2天前 (12-22 00:29)回复00
取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息