链式队列的基本操作 c++

硅谷探秘者 2351 0 0

链式队列的基本操作 c++

class node{
public :
    int data;
    node * next;
    node * prev;
};
#include "node.h"
class queue{
private :
    node * head;//首节点
    node * tail;//尾节点
public:
    queue();
    void enQueue(int data);
    node * outQueue();
    void print();//循序打印
    int isEmpty();
};
#include<iostream>
#include "queue.h"
using namespace std;

queue::queue(){//初始化
    head=new node();
    tail=new node();
    head->next=tail;
    head->prev=NULL;
    tail->next=NULL;
    tail->prev=head;
}
void queue::enQueue(int data){//入队
    node * n=new node();
    n->data=data;
    n->next=head->next;
    n->prev=head;
    head->next->prev=n;
    head->next=n;
}
void queue::print(){
    node * n=head;
    while(n->next->next!=NULL){
        cout<<n->next->data<<"  ";
        n=n->next;
    }
}
node * queue::outQueue(){//出队
    node * n=tail->prev;
    if(n->prev==NULL){
        return NULL;
    }else{
        n->next->prev=n->prev;
        n->prev->next=n->next;
        n->next=NULL;
        n->prev=NULL;
        return n;
    }
}
int queue::isEmpty(){//判断队列是否为空
    node * n=tail->prev;
    if(n->prev==NULL){
        return 0;
    }else{
        return 1;
    }
}

int main(){//测试
    queue * q=new queue();
    cout<<"入队:1"<<endl;
    q->enQueue(1);
    cout<<"入队:2"<<endl;
    q->enQueue(2);
    cout<<"入队:3"<<endl;
    q->enQueue(3);
    cout<<"入队:4"<<endl;
    q->enQueue(4);
    cout<<"打印:";
    q->print();
    if(q->isEmpty()!=0){
        cout<<endl<<"出队:"<<q->outQueue()->data<<endl;    
    }
    cout<<"打印";
    q->print();
    cout<<endl;
    cout<<"入队:5"<<endl;
    q->enQueue(5);
    cout<<"打印:";
    q->print();
    cout<<endl;
    return 0;
}

QQ截图20181202134710.png


评论区
请写下您的评论...
暂无评论...
猜你喜欢
数据结构与算法 2952 出栈入栈c++描述于双向表//节点classnode{public:intdata;node*next;node*prev;};//双向表#include"node.h
数据结构与算法 4950 二叉树c++classnode{public: intdata; node*left; node*right; node(); node(intdata); node(intdata
weblog 3034 c#中数据类型 c#中数据类型分为值类型和引用类型 值类型有包括(结构体类型,枚举类型) 引用类型又包括(类类型,数组类型,接口类型,委托类型) c#数据类型派生谱系 值类型
数据结构与算法 2679 简单单增删改查c++描述classnode{public:intdata;node*next;};#include"node.h"usingnamespacestd;classstack
linux系统 3566 ctrl+c和ctrl+z都是中断命令,但是他们用却不一样.ctrl+c强制中断程序ctrl+z是将任务中断,挂起状态,ctrl+c是强制中断程序执行。ctrl+z是将任务中断.但是此任
weblog 2231 一个案例说明#includeiostreamusingnamespacestd;/**定义函数指针*///typedef声明为一个指针函数类型MethodPointer//int为指针指向函数返回
official 734 《计算机组成原理》运算器组成如下运算器组成控制器组成控制器组成完成一条指令步骤完成一条指令步骤计算机过程过程描述起来非常复杂,不太好描述,我也是截图贴在了这里(原视
数据结构与算法 2128 简单双向表得增删改查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
标签
算法基础 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
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。