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来申请内存,为什么要申请内存?目的是什么?