结构体与链表的一个关键点:头节点

本文探讨了在链表操作如push和pop中常见的问题,根源在于对结构体、头节点和指针的基本概念理解不清晰。结构体`node`包括数据域和指针域,而链表的头节点可以使用指针变量或结构体变量来定义。通过指针变量定义头节点时,需要额外申请空间,而结构体变量则不需要。文章提供了两种创建链表头节点的方法,并举例说明了入栈操作的实现。
摘要由CSDN通过智能技术生成

最近在链表上面反复遇到同样的问题,push 和pop的时候顺序不对。一番周折,找到根本原因,对结构体,头节点,指针的基础概念不清晰。
先说第一个基本概念。节点的定义
结构体必须要定义一个节点。 包含数据域与指针域。
struct node{
int data;
struct node* next// 指针变量。
}LNode;
//必须要要定义链表的结构体。这里要考虑: 不要的成分为头节点,可选的有:长度,容量,index.等等。最重要的就是头节点的定义。头节点是一个Node类型的节点。 Next 为空。 实现方式可以用指针。也可以用变量
第一用指针方式实现
struct List{
int size;
LNode
head;
*
}
第二种实现方式:用结构提变量实现:
struct List
{
int size;
LNode head;

}
两种方式都是定义头节点,区别在于创建链表时候。
如果是指针变量的话,需要给头节点一个申请一个空间,用Malloc
如果是结构提变量的话,就不需要。创建栈的代码如下:

myStack* myStackCreate()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值