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