初识链表第一章,利用链表创建一个目录

1.创建一个结构体

typedef struct catalog
{
	char* content;
	struct catalog* next;
	
}CATALOG;

 2.创建一个返回值为CATALOG*类型,参数为char*类型的函数

参数val --获取所传文件的首地址

CATALOG* init_catalog(char* val)
{
	CATALOG* now = (CATALOG*)calloc(1, sizeof(CATALOG));//开辟一个CATALOG类型大小的空间并将空间地址传给CATALOG类型的指针变量now,最后将空间内容置零
	if (now == NULL)       //判断空间是否开辟成功
	{
		perror("error : ");//不成功,显示错误
		return -1;         //并退出程序
	}
	(now)->content = val;//设置目录内容
	(now)->next = NULL;  //设置指针指向的下一个地址为空地址
	return now;
}

3.声明三个指向CATALOG的指针类型变量n1,n2,n3,用来接收init_catalog函数的返回值。

再将n1,n2,n3串成一个链表。


	CATALOG* n1 = init_catalog("打开\n");
	CATALOG* n2 = init_catalog("退出\n");
	CATALOG* n3 = init_catalog("插入\n");
	n1->next = n2;
	n2->next = n3;

 3.打印目录

这里初学者看到printf函数的参数或许会很奇怪

这里我们可以查一下标准,printf的参数类型为const char * 类型,

在创建结构体时我将content变量的类型设置为指向char的指针类型

你明白了吗?

CATALOG* n = n1;
while(n)
{
	printf(n->content);
	n = n->next;
}

4.最后将calloc开辟的空间释放。

free(n1);
free(n2);
free(n3);
free(n);

 

 5.下面是完整的代码实现

#include<stdio.h>
#include<stdlib.h>
typedef struct catalog
{
	char* content;
	struct catalog* next;
	
}CATALOG;
CATALOG* init_catalog(char* val)
{
	CATALOG* now = (CATALOG*)calloc(1, sizeof(CATALOG));
	if (now == NULL)
	{
		perror("error : ");
		return -1;
	}
	(now)->content = val;
	(now)->next = NULL;
	return now;
}
int main(void)
{
	CATALOG* n1 = init_catalog("打开\n");
	CATALOG* n2 = init_catalog("退出\n");
	CATALOG* n3 = init_catalog("插入\n");
	n1->next = n2;
	n2->next = n3;
	CATALOG* n = n1;
	while(n)
	{
		printf(n->content);
		n = n->next;
	}
	free(n1);
	free(n2);
	free(n3);
	free(n);
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月昤昽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值