C语言链表学习的笔记

文章讨论了数据结构中头节点和首节点的区别,强调每个节点的next指针指向下一个节点。提到了使用辅助指针和dummyhead(虚拟头节点)在操作链表时的技巧。此外,文章解释了malloc在动态内存分配中的作用,区分了栈和堆的区别,指出当指针需要存储数据时才需要手动申请内存,如使用malloc。

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

1、分清楚头节点(没有数据)和首节点(有数据)
2、每个节点的next指针都是节点本身类型的,指向下一个节点
3、可以只使用一个辅助指针来进行判断
4、注意dummyhead(虚拟头节点)的使用

题外话:什么时候需要malloc,什么时候不需要:
答:首先不用malloc的变量声明在栈,是编译器分配的空间。malloc数据在堆区需要手动开辟内存(即malloc或者new)。
指针所指向的地址需要存放数据的时候需要申请空间,一般而言如果按照常见的情况(如下所示):

int a = 1;//存放在栈区
int *q = &a;//也存放在栈区,不用手动申请
			//这里相当于用a的空间给p分配了空间

但是如果直接对指针解引用赋值,则错误

int *p = 1;//错误!没有申请内存空间

所以一般而言申请的内存空间如下:

int *q = (int *)malloc(sizeof(int));

参考:
1、malloc函数
2、一文读懂堆与栈的区别
3、C语言什么情况下需要用malloc来申请内存,为什么要申请内存?目的是什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值