C 单向链表之静态链表

本文介绍了C语言中静态链表的作用和实现,通过代码展示了如何创建和操作静态链表,帮助理解内存零碎数据的组织,并通过程序过程图辅助解析链表的操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C 单向链表之静态链表

一、链表的作用:实现了内存零碎数据的有效组织

比如下面总共有十个字节的空间,用了5个字节。这时我们用malloc来申请5个字节的空间,由于没有连续的内存,申请会失败,然而用链表这种数据结构来组织数据,就可以解决这类问题。
在这里插入图片描述

二、静态链表的实现

静态链表虽然没有太大作用,但对动态链表的理解很有帮助。链表的头和尾都好说,关键是节点的定义,节点定义如下:

typedef struct node
{
	int data;                   //数据域:存储数据
	struct node * next;         //指针域:指向下一个节点
}Node;

可以将链表形象的用下图的小火车表示:
在这里插入图片描述

实现代码
#include<stdio.h>
typedef struct node
{
	int data;             //数据域:存储数据
	struct node * next;   //指针域:指向下一个节点(指向谁,就保存了谁的地址)
}Node;
int main()
{
	Node a, b, c, d;
	Node *head = &a;//头

	a.data = 1;//数据
	b.data = 2;
	c.data = 3;
	d.data = 4;

	a.next = &b;//链接
	b.next = &c;
	c.next = &d;

	d.next = NULL;//尾

	Node *pHead = head;//访问
	while (pHead)
	{
		printf("%d\n",pHead->data);
		pHead = pHead->next;
	}
	return 0;
}
运行结果:

在这里插入图片描述

三、程序过程图分析

(1)为了方便书写,这里假设四个节点a,b,c,d的地址分别为0x10,0x20,0x30,0x40,head指向了a节点,保存了a的地址。

	Node a, b, c, d;
	Node *head = &a;//头

在这里插入图片描述
(2)写入数据

    a.data = 1;//数据
	b.data = 2;
	c.data = 3;
	d.data = 4;

在这里插入图片描述
(3)链接

	a.next = &b;//链接
	b.next = &c;
	c.next = &d;

在这里插入图片描述
(4)尾

d.next = NULL;//尾

在这里插入图片描述
(5)访问

Node *pHead = head;//访问

在这里插入图片描述
1)第一次循环:

	printf("%d\n",pHead->data);//打印1
	pHead = pHead->next;//此时pHead保存的地址为0x20,指向b节点

在这里插入图片描述
2)第二次循环:
在这里插入图片描述
3)第三次循环
在这里插入图片描述
4)第四次循环,打印4,pHead=NULL。(所以不能用原来的head来访问,访问结束后,链表就没有头了)
在这里插入图片描述
5)跳出while()循环,访问结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值