链表实现的堆栈程序(仅供自己学习使用)
2014-07-31 11:39
323 查看
//堆栈的出入栈操作都是从栈顶开始,<span style="color:#ff0000;">先入后出模式</span>
#include <iostream> using namespace std; typedef struct Node { int val; Node * pNext; } Node; typedef struct Stack //定义堆栈 { Node *pTop; //栈顶 Node *pButtom; //栈底 }Stack; //初始化堆栈 void init_stack(Stack &st) { st.pButtom = st.pTop = NULL; } //压栈 void push_stack(Stack &st,int val) { Node *pNew = new Node; if (NULL == pNew) { cout<<"内存分配失败!"<<endl; exit(EXIT_FAILURE); } pNew->val = val; pNew->pNext = st.pTop; st.pTop = pNew; } //判断堆栈是否为空 bool is_empty_stack(Stack &st) { if (st.pTop == st.pButtom) { return true; } else return false; } //出栈 int pop_stack(Stack &st) { if (is_empty_stack(st)) { cout<<"堆栈已空,无法出栈!"<<endl; exit(EXIT_FAILURE); } Node *p = st.pTop; int val = p->val; st.pTop = p->pNext; delete p; return val; } //清空堆栈 void clear_stack(Stack &st) { if (is_empty_stack(st)) { return ; } Node *p ; while(st.pTop != st.pButtom) { p = st.pTop ; st.pTop = st.pTop->pNext; delete p; } } //遍历堆栈元素 void traverse_stack(Stack &st) { Node *p = st.pTop; while (p != st.pButtom) { cout<<p->val<<" "; p = p->pNext; } cout<<endl; } void main() { Stack st; init_stack(st); push_stack(st,2); push_stack(st,3); push_stack(st,4); traverse_stack(st); cout<<pop_stack(st); clear_stack(st); traverse_stack(st); }
相关文章推荐
- 链表实现的队列程序(仅供自己学习使用)
- Android多媒体学习十:利用AudioRecord类实现自己的音频录制程序
- vs2003快捷键(仅供自己学习记录使用)
- 【tcp-ip学习总结】使用tcp协议实现简单的通信小程序
- 数据结构与算法-----堆栈-使用链表(链式结构)实现
- 数据结构学习---堆栈的动态数组实现及链表实现
- Android多媒体学习九:利用MediaRecorder类实现自己的音频录制程序
- Android多媒体学习十:利用AudioRecord类实现自己的音频录制程序
- 菜鸟学习c++—map使用练习 实现词频统计程序
- 使用链表实现堆栈
- 韩顺平_PHP程序员玩转算法公开课(第一季)07_使用数组实现堆栈_学习笔记_源代码图解_PPT文档整理
- 使用管道编程----利用别人的程序,实现自己的功能
- 使用内部单向链表实现的一个简单堆栈
- 3.第三单元任务二实训:使用作业提交系统提交Java作业时 ,需要输入Java源代码文件名和自己的邮箱,提交前对Java文件名以及邮箱进行有效检查。编写程序实现对输入的Java源文件名以及邮箱有效性的
- 使用链表实现堆栈
- 考研数据结构与算法之堆栈的使用(四)链表实现的堆栈
- Android实现监听手机通话--仅供学习使用--
- 学习实践:使用模式,原则实现一个C++自动化测试程序
- Java基础课程学习总结,使用LinkedList简单模拟队列数据结构和堆栈数据结构的实现
- C++学习笔记(四)指针实现的链表、堆栈、队列、二叉查找树