带头节点的链式存储栈基本操作(进栈、出栈、获取栈顶元素)
栈链式存储的特点
链式存储,可以带头结点,或不带头结点,本篇介绍带头结点的链式存储栈的基本操作。
进栈、出栈都在头结点一侧进行。
由于带有头结点,可不设置栈顶指针,头结点可视为栈顶指针来进行操作。
链式存储栈的基本操作代码实现
/**
* 带头节点的链式存储栈
*/
#include <cstdio>
#include <malloc.h>
/**
* 定义结构
*/
typedef struct LNode{
int data; //指针域
struct LNode *next; //数据域
}SqStack,*LinkStack;
/**
* 初始化栈
*/
LNode* initStack(LinkStack &linkStack){
linkStack = (LinkStack)malloc(sizeof(LNode)); //创建头结点
linkStack->data = -1; //头结点指针域初始化为-1
linkStack->next = NULL;
return linkStack;
}
/**
* 判断栈是否为空
*/
bool linkStackIsEmpty(LinkStack linkStack){
if(linkStack->next == NULL){
// 只有头结点
return true; //栈空
}
return false; //栈非空
}
/**
* 进栈操作(只在头结点进行进栈操作)
*/
void push(LinkStack &linkStack,