写在前面:
上一讲,我们用的是数组来实现队列的功能,这一讲我们尝试用链表来实现,其实我认为链表实现比数组实现更容易理解一些。
队列的插入
书接前文,由于上一讲我们已经对队列的定义进行深入的讲解了,我们直接进入代码部分,同样我们也直接实现双端队列的功能。

用链表进行操作其实就用到了之前我们讲的双向链表操作啦,对应到双端队列里就是左插入和右插入,左删除和右删除。为了方便,这里创建了头结点和尾结点,通过头结点和尾结点可以快速进行操作。具体操作和双向链表几乎一样,没有了解过的小伙伴可以看我之前讲的双向链表那一节。
线性表 - 03 双向循环链表
//左插入
void left_insert(int key) {
if (Size == maxSize) {
cout << "该队列已满" << endl;
}
else {
Node* new_node = new Node;
new_node->val = key;
new_node->right = head->right;
new_node->left = head;
head->right = new_node;
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 <

本文介绍了如何使用链表实现双端队列,包括左插入、右插入、左删除和右删除操作。代码示例展示了C++如何初始化、插入和删除节点,并提供了完整的源代码供读者参考。
&spm=1001.2101.3001.5002&articleId=124179297&d=1&t=3&u=13d5356960044448bc93d229d935b543)
1097

被折叠的 条评论
为什么被折叠?



