C++实现链栈的算法+步骤(附全代码):
使用c++完成数据结构链栈的基本操作,包括(初始化、入栈、出栈、取栈顶元素、遍历输出栈等),可直接编译运行。
链栈
是指采用链式存储结构实现的栈,通常用单链表来表示。它的特点是:用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续也可以是不连续)。
而顺序栈
是用顺序存储结构实现的栈,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。
链栈的定义:
#define MAXSIZE 100
typedef int SElemType;
typedef int Status;
//链栈的存储结构
typedef struct StackNode
{
SElemType data;
struct StackNode* next;
}StackNode, * LinkStack;
链栈的初始化:
【算法步骤】
构造一个空栈即可。
【算法描述】
//链栈的初始化
Status InitStack(LinkStack& S)
{
//构造一个空栈S,栈顶指针置空
S = NULL;
return OK;
}
链栈的入栈:
【算法步骤】
①为入栈元素e分配空间,用指针p指向。
②将新结点数据域置为e。
③将新结点插入栈顶。
④修改栈顶指针为p。
【算法描述】
//链栈的入栈
Status Push(LinkStack& S, SElemType e)
{
//在栈顶插入元素e,链栈不需要判断栈满
StackNode* p = new StackNode;
p->data = e;
p->next = S;
S = p;
return OK;
}
链栈的出栈:
【算法步骤】
①判断栈是否为空,若空则返回ERROR。
②将栈顶元素赋给e。
③临时保存栈顶元素的空间,以备释放。
④修改栈顶指针,指向新的栈顶元素。
⑤释放原栈顶元素的空间
【算法描述】
//链栈的出栈
Status Pop(LinkStack& S, SElemType& e)
{
//删除S的栈顶元素,用e返回其值
if (S == NULL) //判断是否为栈空
return ERROR;
e = S->data;
StackNode* p