c++实现链式结构的栈
来源:互联网 发布:gmail pop 端口 编辑:程序博客网 时间:2024/05/21 20:27
链式结构的栈的主题是一个单向链表,因为只有一个可访问的头并且可以轻松在头部进行插入和删除,因为栈的操作也都是在顶部,所以可以根据这一特性用链表的头部表示栈的顶部实现一个链式结构的栈,并且不存在大小的限制。更多栈的特性不做过多描述。
我们使用带头结点的链表,头结点的数据区就储存栈的元素个数,然后实现链表的头部插入函数模拟栈的push,实现链表的删除头部元素模拟栈的pop。
Now reading the fxxking code:
#include <iostream>using namespace std;struct NODE//定义链表结构{ int data; NODE *next; };class STACK//定义栈类{private: NODE *stack;public: STACK(); ~STACK(){} void initialize();//初始化 void push(int n); void pop(); int get_top(); void clear(); bool isempty(); unsigned size(); void display_stack();//显示从栈底到栈顶的元素};void STACK::initialize(){ //初始化头结点 stack = new NODE(); stack->data = 0;//设置元素个数为0 stack->next = NULL;}STACK::STACK(){ initialize();}void STACK::push(int n){ //创建新的节点 NODE *new_ele = new NODE(); new_ele->data = n;//插入数据 //头插法连接到链表中 new_ele->next = stack->next; stack->next = new_ele; stack->data++;}void STACK::pop(){ if (isempty())//检查是否是在空栈中进行操作 { cout << "stack is empty" << endl; return; } NODE *temp = stack->next; stack->next = temp->next; delete(temp);//释放删除节点的内存 stack->data--;}void STACK::clear(){ stack->data = 0; stack = stack->next; NODE *tmp = NULL; //释放所有节点的内存 while (stack) { tmp = stack; stack = stack->next; delete(tmp); } //调用函数重新初始化 initialize();}bool STACK::isempty(){ return stack->data > 0 ? false : true;}int STACK::get_top(){ if (!isempty()) return stack->next->data; else cout << "stack is empty" << endl; return -1;}void STACK::display_stack(){ //输出栈中元素,将栈中元素导出到数组中然后输出,实际中可以忽略次函数 if (isempty()) { cout << "stack is empty" << endl; return; } int t_size = stack->data; int s_size = stack->data; int *list = new int[t_size]; NODE *temp = stack->next; while (temp) { list[--t_size] = temp->data; temp = temp->next; } for (int i = 0; i < s_size; i++) cout << list[i] << " "; cout << endl;}unsigned STACK::size(){ return stack->data;}int main(int argc, char const *argv[]){ STACK stack;//定义栈 /* *do somthing here */ return 0;}
0 0
- 栈的链式结构实现
- 栈的链式 结构实现
- 栈的链式存储结构及C实现
- C的简易栈(链式存储结构)实现
- 队列的链式结构C语言实现
- 栈的实现(顺序结构&&链式结构)
- c链式栈的实现
- 链式栈的C实现
- C语言栈的链式存储结构
- 栈的链式存储结构的实现
- 动态栈 栈结构的链式实现
- 栈的链式存储结构C++实现
- c++实现链式结构的栈
- 栈的链式存储结构及实现
- 栈的链式存储结构及实现
- 线性结构--->栈的链式存储实现
- 栈的链式存储结构以及实现
- 基于链式结构的栈实现
- jstl.jar 导入eclipse中的方法
- HDOJ 1181 变形课(邻接表+DFS或BFS)
- 百度优化规范之标题优化-网站推广
- Is your boss making you sick?
- Android Studio系列教程四--Gradle基础
- c++实现链式结构的栈
- r语言kmeans聚类博客转载
- android 大图无损上传
- java解惑之再谈String.split()
- JAVA 代理模式
- 前端知识概述----公司内部的一次分享
- UML之用例图【概念、关系、例子】
- 仿手机QQ列表支持下拉,上滑,滑动删除
- windows 下python包管理工具pip的安装与使用