# 队列的插入

//左插入
void left_insert(int key) {
if (Size == maxSize) {
cout << "该队列已满" << endl;
}
else {
Node* new_node = new Node;
new_node->val = key;
new_node->right->left = new_node;
Size++;
}
}

//右插入
void right_insert(int key) {
if (Size == maxSize) {
cout << "该队列已满" << endl;
}
else {
Node* new_node = new Node;
new_node->val = key;
new_node->right = last;
new_node->left = last->left;
last->left = new_node;
new_node->left->right = new_node;
Size++;
}
}

# 队列的删除

//右删除
void right_delete() {
if (Size == 0) {
cout << "该队列为空" << endl;
}
else {
Node* free_node = last->left;
free_node->left->right = last;
last->left = free_node->left;
delete[]free_node;
Size--;
}
}

//左删除
void left_delete() {
if (Size == 0) {
cout << "该队列为空" << endl;
}
else {
delete[]free_node;
Size--;
}
}

# 全部代码

#include<bits/stdc++.h>
using namespace std;

//结点的定义
struct Node {
int val;
Node* right;
Node* left;
};

Node* last;    //尾指针
int Size;    //队列中当前元素数量
int maxSize;//队列最大容纳元素数量

void init_node();
void right_insert(int);
void left_insert(int);
void right_delete();
void left_delete();
void show();

int main() {
init_node();
right_insert(1);
left_insert(2);
right_insert(3);
left_insert(4);
right_insert(5);
left_insert(6);
show();
right_delete();
left_delete();
show();
right_delete();
left_delete();
right_delete();
left_delete();
show();
}

//初始化结点
void init_node() {
last = new Node;
last->right = NULL;
Size = 0;
maxSize = 5;
}

//左插入
void left_insert(int key) {
if (Size == maxSize) {
cout << "该队列已满" << endl;
}
else {
Node* new_node = new Node;
new_node->val = key;
new_node->right->left = new_node;
Size++;
}
}

//右插入
void right_insert(int key) {
if (Size == maxSize) {
cout << "该队列已满" << endl;
}
else {
Node* new_node = new Node;
new_node->val = key;
new_node->right = last;
new_node->left = last->left;
last->left = new_node;
new_node->left->right = new_node;
Size++;
}
}

//右删除
void right_delete() {
if (Size == 0) {
cout << "该队列为空" << endl;
}
else {
Node* free_node = last->left;
free_node->left->right = last;
last->left = free_node->left;
delete[]free_node;
Size--;
}
}

//左删除
void left_delete() {
if (Size == 0) {
cout << "该队列为空" << endl;
}
else {
delete[]free_node;
Size--;
}
}

void show() {
if (Size == 0) {
cout << "队列为空" << endl;
}
else {
for (int i = 0; i < Size; i++) {
cout << temp->val << " ";
temp = temp->right;
}
cout << endl;
}
}

|
3月前
|

37 0
|
1月前
|

【C++】deque以及优先级队列
【C++】deque以及优先级队列
30 0
|
2月前
|

C++的list-map链表与映射表
markdown C++ 中的list和map提供链表和映射表功能。list是双向链表，支持头尾插入删除（push_front/push_back/pop_front/pop_back），迭代器遍历及任意位置插入删除。map是键值对集合，自动按键排序，支持直接通过键来添加、修改和删除元素。两者均能使用范围for循环遍历，map的count函数用于统计键值出现次数。 
26 1
|
3月前
|

【C++/STL】：stack/queue的使用及底层剖析&&双端队列&&容器适配器
【C++/STL】：stack/queue的使用及底层剖析&&双端队列&&容器适配器
52 2
|
3月前
|

【C++进阶】深入STL之 栈与队列：数据结构探索之旅
【C++进阶】深入STL之 栈与队列：数据结构探索之旅
40 4
|
3月前
|

22 1
|
3月前
|

C++的list-map链表与映射表

29 2
|
2月前
|

【C++】详解STL的适配器容器之一：优先级队列 priority_queue
【C++】详解STL的适配器容器之一：优先级队列 priority_queue
29 0
|
3月前
|
C++ 容器
【C++】学习笔记——优先级队列
【C++】学习笔记——优先级队列
27 0
|
3月前
|
C++ Python
UE C++ 链表
UE C++ 链表
30 0