链式栈的出栈入栈操作c++描述
链式栈的出栈入栈操作c++描述
基于双向链表
//节点
class node{
public :
int data;
node * next;
node * prev;
};
//双向链表
#include"node.h"
class stack{
private :
node * head;//首节点
node * tail;//尾节点
public:
stack();
void push(int data);
node * put();
void print();//循序打印
};
//实现
#include<iostream>
#include "stack.h"
using namespace std;
stack::stack(){
head=new node();//初始化,不做数据处理
tail=new node();
head->next=tail;
head->prev=NULL;
tail->next=NULL;
tail->prev=head;
}
void stack::push(int data){
node * n=new node();
n->data=data;
n->next=head->next;
n->prev=head;
head->next->prev=n;
head->next=n;
}
void stack::print(){
node * n=head;
while(n->next->next!=NULL){
cout<<n->next->data<<" ";
n=n->next;
}
}
node * stack::put(){
node * n=head->next;
if(n->next==NULL){
cout<<"空栈"<<endl;
return NULL;
}
head->next=n->next;
n->next->prev=head;
n->next=NULL;
n->prev=NULL;
return n;
}
int main(){
stack * s=new stack();
cout<<"输出:";
s->print();
s->push(1);
s->push(2);
s->push(3);
s->push(4);
s->push(5);
s->print();
cout<<endl;
cout<<"出栈:";
node *n=s->put();
if(n!=NULL){
cout<<n->data<<endl;
}
cout<<"输出:";
s->print();
cout<<endl;
return 1;
}
评论区
请写下您的评论...
猜你喜欢
blog
栈的应用-表达式求值
数据结构与算法
1678
表达式:ab+ab-*高级语言中采用自然语言的中缀表达式,但是计算机对中缀表达式的处理是非常困难的,而对后缀或前缀表达式则显得非常简单后缀表达式的特点: 1.在后缀表达式中,变量(操作数)出现的顺序与中
blog
链式队列的基本操作 c++
数据结构与算法
2585
链式队列的基本操作c++classnode{public:intdata;node*next;node*prev;};#include"node.h"classqueue{private:node
blog
什么是单调栈?
数据结构与算法
3337
始遍历元素,把小于e或者等于e的元素弹出栈,直接遇到一个大于e的元素或者栈为空为止,然后再把e压入栈中。2.对于单调递减栈,则每次弹出的是大于e或者等于e的元素。案例:3,1,2,9,7,6,8,4依次
blog
栈的应用-迷宫问题
数据结构与算法
8582
1.问题描述:问题:上面有一个迷宫,灰色部分代表不能通过,白色部分代表可以通过,现在从a点出发,能否找到一条路径到达b点,如果能,输出此路径。下面采用试探法求解,采用栈结构保存每一步的内容(包括坐标
java虚拟机(jvm)
6995
Java虚拟机栈都包含那些东西在阅读过深入理解java虚拟机以后了解到java虚拟机栈包括栈帧、局部变量表、操作数栈、动态链接、方法返回等。Java虚拟机栈都储存那些内容呢一般包括基本数据类型,和对
blog
后续表达式 计算器
数据结构与算法
3298
后续表达式计算器核心算法:1.前缀表达式转后缀表达式-开始扫描:2·元素为数字时,加入后缀表达式;3·元素为运算符:a.若为'(',入栈;、b.若为')',则依次把栈中的的运算符加入后缀表达式中,直
blog
简单 单链表的增删改查 c++描述
数据结构与算法
2998
简单单链表的增删改查c++描述classnode{public:intdata;node*next;};#include"node.h"usingnamespacestd;classstack
blog
简单 双向链表得增删改查 c++描述
数据结构与算法
2458
简单双向链表得增删改查c++描述classnode{public:intdata;node*next;node*prev;};#include"node.h"classrelink
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
2024-08
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。