链式栈的出栈入栈操作c++描述

硅谷探秘者 2979 0 0

链式栈的出栈入栈操作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;
}



评论区
请写下您的评论...
暂无评论...
猜你喜欢
数据结构与算法 1507 表达:ab+ab-*高级语言中采用自然语言中缀表达,但是计算机对中缀表达处理是非常困难,而对后缀或前缀表达则显得非常简单后缀表达特点: 1.在后缀表达中,变量(数)顺序与中
数据结构与算法 2387 队列基本c++classnode{public:intdata;node*next;node*prev;};#include"node.h"classqueue{private:node
数据结构与算法 3106 始遍历元素,把小于e或者等于e元素弹,直接遇到一个大于e元素或者为空为止,然后再把e压中。2.对于单调递减,则每次弹是大于e或者等于e元素。案例:3,1,2,9,7,6,8,4依次
数据结构与算法 8373 1.问题:问题:上面有一个迷宫,灰色部分代表不能通过,白色部分代表可以通过,现在从a点发,能否找到一条路径到达b点,如果能,输此路径。下面采用试探法求解,采用结构保存每一步内容(包括坐标
java虚拟机(jvm) 6795 Java虚拟机都包含那些东西在阅读过深理解java虚拟机以后了解到java虚拟机包括帧、局部变量表、、动态接、方法返回等。Java虚拟机都储存那些内容呢一般包括基本数据类型,和对
数据结构与算法 3038 后续表达计算器核心算法:1.前缀表达转后缀表达-开始扫:2·元素为数字时,加后缀表达;3·元素为运算符:a.若为'(',;、b.若为')',则依次把运算符加后缀表达中,直
数据结构与算法 2728 简单单增删改查c++classnode{public:intdata;node*next;};#include"node.h"usingnamespacestd;classstack
数据结构与算法 2171 简单双向表得增删改查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
标签
算法基础 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
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。