用链表实现堆栈
来源:互联网 发布:泰国旅游网络 编辑:程序博客网 时间:2024/06/07 00:57
堆栈(stack)是一组相同数据类型数据的集合,且拥有后入先出(last in first out)的特性,即堆栈的所有操作都是在顶端进行的。堆栈有五个基本操作:
许多算法用到堆栈,如递归、二叉树、森林的遍历。在C++语音中可以用数组结构和链表结构方式实现堆栈。用数组结构的优点是算法简单,但缺点突出,就是数组本身需要事先设置大小,不灵活。而链表结构实现的优缺点与数组结构的相反,即优点是随时可以动态改变链表的长度,缺点是算法较复杂。下面用链表实现堆栈:
#include <iostream>#include <cstdlib>#include <iomanip>using namespace std;class Node{public:int iData;class Node *Next;};typedef class Node StackNode;typedef StackNode *SingleLinkedStack;//定义链表堆栈的新类型SingleLinkedStack pTop = NULL; //指向堆栈顶端的指针//判断是否为空堆栈bool fnisEmpty(){ if(NULL == pTop){return true;} else{return false;}}int fnPush(const int iPushData){ SingleLinkedStack pNewNode;//新加入节点的指针 pNewNode = new StackNode; pNewNode->iData = iPushData; pNewNode->Next = pTop;//将新节点指向堆栈的顶端 pTop = pNewNode;//新节点成为堆栈的顶端return pTop->iData;}int fnPop(){int iTemp; SingleLinkedStack ptr; if(fnisEmpty()) {cout << "The stack is empty,you can't pop."; return false; } else { ptr = pTop; pTop = pTop->Next;//将堆栈顶端的指针指向下一个节点 iTemp = ptr->iData; delete ptr;return iTemp; }}int main(){ int iData; cout << "请按序输入5个数据:" << endl; for(int i = 0; i < 5;i++) {cin >> iData;fnPush(iData); } while(!fnisEmpty()) {cout << "堆栈依次弹出的整数为:" << fnPop() << endl; } return true; }
阅读全文
0 0
- 用链表实现堆栈数据结构
- 用链表实现堆栈
- 用链表实现堆栈
- 用链表实现堆栈
- 用链表实现堆栈--链式栈
- 堆栈实现
- 实现堆栈
- 堆栈实现
- 堆栈实现
- java用链表实现堆栈和队列
- 堆栈的基本操作(用链表实现)
- 堆栈的C实现
- 堆栈数据结构的实现~
- 类模板实现堆栈
- 链式实现的堆栈
- 堆栈,队列的实现
- C语言实现堆栈
- 静态数组实现堆栈
- IOS杂笔- 7(类方法load与initialize的区别 浅析)
- 制作IOS的KCF视觉追踪framework库
- #219. 无聊的游戏
- Hibernate组件映射
- 64位win10上安装TensorFlow步骤
- 用链表实现堆栈
- mysql show profiles 使用分析sql 性能
- okgo简单的GET请求 和POST请求
- mybatis中的#和$的区别
- sqlite3相关知识点
- nginx安装配置启动,把前端的请求一部分转发到本地,ajax请求转发到服务器。
- [CodeM初赛A轮]A
- js模块化编程
- 排列和组合算法