创建单链表

怎么创建一个单链表

什么是链表?

链表是一种物理存储单元上非连续、非顺序的存储结构。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 (需要一个头指针存储第一个节点)

怎么创建一个链表

创建链表涉及下面3步:

  1. 使用malloc() 为结构分配足够的空间
  2. 储存结构的地址;
  3. 把当前信息拷贝到结构中。

实例

创建一个链表,依次存储数据并显示。

做法如下:

1.创建所需要的结构。

1
2
3
4
5
6
7
8
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable : 4996)
struct ListNode //声明结构
{
int Key; //存储数据
struct ListNode * next; //指向下一个链表
};

2.创建三个指针

1
2
3
4
5
int main(void)
{
struct ListNode * head = NULL; //头指针
struct ListNode * prev=NULL; //存储current的结构
struct ListNode * current; //每次存储数据

3.读入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int end,i;
while (scanf("%d", &end) != EOF)
{
for (i = 0; i < end; i++)
{
current = (struct ListNode*)malloc(sizeof(struct ListNode));
if (head == NULL) //头指针为空
head = current; //设置头指针
else
prev->next = current; //上一次分配的结构存储新结构的指针
(*current).next = NULL; //设置指向空指针
scanf("%d", &(current->Key)); //录入数据
prev = current; //prev指向当前current分配的结构
}

4.显示链表

1
2
3
4
5
6
current = head;          //指向头指针
while (current != NULL)
{
printf("%d", current->Key);
current = current->next; //指向下一个指针
}

5.释放链表

1
2
3
4
5
6
7
8
9
10
11
		current = head;          //指向头指针指向的空间
while (current != NULL)
{

head = current->next; //原头指针指向的下一个指针
free(current); //释放头指针原来指向的空间
current = head; //再次指向头指针
}
}
return 0;
}

这就是一个简单单链表创建的过程啦!(:з」∠)

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2020 lsengard
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信