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

硅谷探秘者 1431 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

猜你喜欢
数据结构与算法 2121 出栈入栈c++描述于双向表//节点classnode{public:intdata;node*next;node*prev;};//双向表#include"node.h
数据结构与算法 3985 二叉树c++classnode{public: intdata; node*left; node*right; node(); node(intdata); node(intdata
weblog 2305 c#中数据类型 c#中数据类型分为值类型和引用类型 值类型有包括(结构体类型,枚举类型) 引用类型又包括(类类型,数组类型,接口类型,委托类型) c#数据类型派生谱系 值类型
数据结构与算法 1715 简单单增删改查c++描述classnode{public:intdata;node*next;};#include"node.h"usingnamespacestd;classstack
linux系统 2488 ctrl+c和ctrl+z都是中断命令,但是他们用却不一样.ctrl+c强制中断程序ctrl+z是将任务中断,挂起状态,ctrl+c是强制中断程序执行。ctrl+z是将任务中断.但是此任
weblog 1509 一个案例说明#includeiostreamusingnamespacestd;/**定义函数指针*///typedef声明为一个指针函数类型MethodPointer//int为指针指向函数返回
official 106 《计算机组成原理》运算器组成如下运算器组成控制器组成控制器组成完成一条指令步骤完成一条指令步骤计算机过程过程描述起来非常复杂,不太好描述,我也是截图贴在了这里(原视
数据结构与算法 1074 简单双向表得增删改查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
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo
目录