【C++】【数据结构】链栈的基本操作(初始化、入栈、出栈、取栈顶元素、遍历输出栈)的算法实现附全代码

您所在的位置:网站首页 打印顺序栈中所有元素 【C++】【数据结构】链栈的基本操作(初始化、入栈、出栈、取栈顶元素、遍历输出栈)的算法实现附全代码

【C++】【数据结构】链栈的基本操作(初始化、入栈、出栈、取栈顶元素、遍历输出栈)的算法实现附全代码

2024-03-19 03:50| 来源: 网络整理| 查看: 265

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 = S; S = S->next; delete p; return OK; } 取栈顶元素:

【算法步骤】

① 判断栈是否空,若空则返回ERROR。 ② 返回e获取栈顶元素的值。

【算法描述】

//取链栈的栈顶元素 SElemType GetTop(LinkStack S, SElemType &e) { //返回S的栈顶元素,不修改栈顶指针 if (S != NULL) //非栈空时返回 return S->data; return ERROR; } 遍历输出顺序栈:

【算法步骤】

① 判断栈是否空,若空则返回ERROR。 ② 循环输出栈顶元素。

【算法描述】

//遍历输出链栈 Status StackTraverse(LinkStack S) { StackNode* p = S; if (p == NULL) { cout SElemType data; struct StackNode* next; }StackNode, * LinkStack; Status InitStack(LinkStack&); //空栈 Status Push(LinkStack&, SElemType); //入栈 Status Pop(LinkStack&, SElemType&); //出栈 Status GetTop(LinkStack, SElemType&); //读栈顶元素 Status StackTraverse(LinkStack); //遍历 int main() { LinkStack S; int e, a; if (InitStack(S)) cout case 1: cout e; if (!Push(S, e)) cout //删除S的栈顶元素,用e返回其值 if (S == NULL) //判断是否为栈空 return ERROR; e = S->data; StackNode* p = S; S = S->next; delete p; return OK; } //取链栈的栈顶元素 SElemType GetTop(LinkStack S, SElemType &e) { //返回S的栈顶元素,不修改栈顶指针 if (S != NULL) //非栈空时返回 return S->data; return ERROR; } //遍历输出链栈 Status StackTraverse(LinkStack S) { StackNode* p = S; if (p == NULL) { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3