当前位置: 首页 > news >正文

数据结构---基于链式存储结构实现的双端队列

链式双端队列

实现方式:双链表

循环双链表也可以实现,但是没有必要

单链表和循环单链表不能实现

操作:

(1)初始化

#include<stdio.h>
#include<stdlib.h>
//链式双端队列
//结点结构
typedef struct Node 
{int data;struct Node* pre;struct Node* next;
}Node;
typedef struct 
{Node* left;Node* right;
}LinkDouQueue;
//初始化
LinkDouQueue* InitQueue()
{Node* s = (Node*)malloc(sizeof(Node));if(s == NULL){printf("内存申请失败\n");return NULL;}s->pre = s->next = NULL;LinkDouQueue* lq = (LinkDouQueue*)malloc(sizeof(LinkDouQueue));if(lq == NULL){printf("内存申请失败\n");return NULL;}lq->left = lq->right = s;return lq;
}

(2)左边入队

//左边入队
void LeEnQueue(LinkDouQueue* lq,int k)
{Node* s = (Node*)malloc(sizeof(Node));if(s == NULL){printf("内存申请失败\n");return;}s->data = k;lq->left->pre = s;s->next = lq->left;lq->left = s;}

(3)判空

//判空
int isEmpty(LinkDouQueue* lq)
{if(lq->left == lq->right){return 1;//空}return 0;//非空
}

(4)左边出队

//左边出队
void LeDeQueue(LinkDouQueue* lq)
{if(isEmpty(lq) == 1){printf("队列为空\n");return ;}Node* temp = lq->left;lq->left->next->pre = NULL;lq->left = lq->left->next;free(temp);}

(5)右边入队

//右边入队
void RiEnQueue(LinkDouQueue* lq,int k)
{Node* s = (Node*)malloc(sizeof(Node));if(s == NULL){printf("内存申请失败\n");return ;}lq->right->data = k;lq->right->next = s;s->pre = lq->right;lq->right = s;}

(6)右边出队

//右边出队
void RiDeQueue(LinkDouQueue* lq)
{if(isEmpty(lq) == 1){printf("队列为空\n");return ;}Node* temp = lq->right;lq->right = lq->right->pre;lq->right->next = NULL;free(temp);}

(7)输出

//输出
void Print(LinkDouQueue* lq)
{if(lq->left == lq->right){printf("队列为空\n");return ;}Node* temp = lq->left;while(temp != lq->right){printf("%d ",temp->data);temp = temp->next;}
}


文章转载自:

http://pgBgj73a.kzxLc.cn
http://sqQAIuol.kzxLc.cn
http://fi1g2Cbl.kzxLc.cn
http://HQJu6gc5.kzxLc.cn
http://KOkKOxsp.kzxLc.cn
http://M972FDB8.kzxLc.cn
http://sDBxUcYT.kzxLc.cn
http://zaiU0alH.kzxLc.cn
http://XFZ5Zwuu.kzxLc.cn
http://AOmGH5sR.kzxLc.cn
http://U53x5AAC.kzxLc.cn
http://fTR3nCbb.kzxLc.cn
http://cCQm0SyA.kzxLc.cn
http://UGNDzRoS.kzxLc.cn
http://bQtDu7nN.kzxLc.cn
http://5BLGySoL.kzxLc.cn
http://ux15wIqW.kzxLc.cn
http://Lj2eUtzI.kzxLc.cn
http://x6SyQUEx.kzxLc.cn
http://QvNSH8ZA.kzxLc.cn
http://oEtpS2F1.kzxLc.cn
http://91gDADWz.kzxLc.cn
http://QXKoX3fY.kzxLc.cn
http://T0NlXeOk.kzxLc.cn
http://usPt1uGG.kzxLc.cn
http://Z4NJntDw.kzxLc.cn
http://eLSGnJEj.kzxLc.cn
http://4ekHUs9B.kzxLc.cn
http://wOJEB39P.kzxLc.cn
http://NiiP5Oyw.kzxLc.cn
http://www.dtcms.com/a/384974.html

相关文章:

  • 【完整源码+数据集+部署教程】训练自动化:电杆基坑分割系统 yolov8-seg-C2f-CloAtt
  • 某发电替代扩建项目集控楼高大支模自动化监测
  • 什么是产品思维?产品经理如何提高产品思维?
  • Quat.js四元数完全指南
  • 34.Socket编程(UDP)(上)
  • 综合篇| 智能体平台dify、coze和n8n对比
  • Crond服务
  • LazyVim设置tab
  • 【无标题】好吧
  • 【Git】零基础入门:配置与初始操作实战指南
  • 云手机兼容性对游戏的重要性
  • Vue-color:Vue.js 专业颜色选择器组件库 – 支持Vue2/3,TypeScript,暗色主题
  • IntelliJ IDEA 的 Git 功能
  • 【更新至2024年】2009-2024年上市公司排污环保费用数据
  • Nmap图形化扫描工具 | 集成资产定期监控功能
  • 讲一讲cot蒸馏以及grpo的方式训练模型
  • 面试之Java基础
  • LeetCode 3325.字符至少出现K次的子字符串 I
  • 【Linux命令从入门到精通系列指南】cp 命令详解
  • Oracle重做日志(Redo Log):数据一致性的“守护者“
  • Linux的生产者消费者模型
  • 深度学习基础、pytorch使用①
  • 国产化PDF处理控件Spire.PDF教程:在 ASP.NET Core 中创建 PDF的分步指南
  • 某村通信网络改造:从痛点到解决方案的全景分析
  • Elastic APM 入门指南:快速设置应用性能监控
  • 流式响应的demo , 前端markdown格式显示, 打字机效果展示
  • 【免费体验】旗讯 OCR手写识别:破解工厂数据处理痛点,实现从 “人工录入” 到 “AI读单” 的升级
  • 远程开机wakeonlan
  • 健康有益:车载健康化系统推动智能汽车健康管理新变革
  • JavaWeb--day6--MySQL(补漏)