最近在链表上面反复遇到同样的问题,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()