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

硅谷探秘者 2157 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;
}


猜你喜欢
数据结构与算法 719 表达:ab+ab-*高级语言中采用自然语言中缀表达,但是计算机对中缀表达处理是非常困难,而对后缀或前缀表达则显得非常简单后缀表达特点: 1.在后缀表达中,变量(数)顺序与中
数据结构与算法 1465 队列基本c++classnode{public:intdata;node*next;node*prev;};#include"node.h"classqueue{private:node
数据结构与算法 1876 始遍历元素,把小于e或者等于e元素弹,直接遇到一个大于e元素或者为空为止,然后再把e压中。2.对于单调递减,则每次弹是大于e或者等于e元素。案例:3,1,2,9,7,6,8,4依次
数据结构与算法 7622 1.问题:问题:上面有一个迷宫,灰色部分代表不能通过,白色部分代表可以通过,现在从a点发,能否找到一条路径到达b点,如果能,输此路径。下面采用试探法求解,采用结构保存每一步内容(包括坐标
java虚拟机(jvm) 5738 Java虚拟机都包含那些东西在阅读过深理解java虚拟机以后了解到java虚拟机包括帧、局部变量表、、动态接、方法返回等。Java虚拟机都储存那些内容呢一般包括基本数据类型,和对
数据结构与算法 1659 后续表达计算器核心算法:1.前缀表达转后缀表达-开始扫:2·元素为数字时,加后缀表达;3·元素为运算符:a.若为'(',;、b.若为')',则依次把运算符加后缀表达中,直
数据结构与算法 1743 简单单增删改查c++classnode{public:intdata;node*next;};#include"node.h"usingnamespacestd;classstack
数据结构与算法 1113 简单双向表得增删改查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
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议
目录
祝愿神州十三飞行乘组平安归来