- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章(栈和队列)第三章(栈和队列)
解决方法:浪费一个元素空间, 队满的条件:(rear+1)%MAXSIZE==front 队空的条件:front==rear 循环队列的类型定义: typedef struct { ElemType data[MAXSIZE]; /*数据的存储区*/ int front,rear; /*队头队尾指针*/ }CirQueue; /*循环队*/ 各项基本操作算法。 ⑴ 置空队 CirQueue InitCQueue() { CirQueue q; q.front=q.rear=0; return q; } ⑵ 入队 CirQueue EnCQueue ( CirQueue q , ElemType x) { if ((q.rear+1)%MAXSIZE==q.front) { printf("队满"); return q; /*队满不能入队*/ } q.data[q.rear]=x; q.rear=(q.rear+1) % MAXSIZE; return q; /*入队完成*/ } ⑶ 出队 CirQueue DeCQueue (CirQueue q) {ElemType x; if (q.front==q.rear) { printf("队空"); return q; /*队空不能出队*/ } x=q.data[q.front]; /*读出队头元素*/ q.front=(q.front+1) % MAXSIZE; return q; /*出队完成*/ } 课堂练习 1、完成循环队列的基本操作实现: 置空队:CirQueue InitCQueue() 入队: CirQueue EnCQueue ( CirQueue q , ElemType x) 出对: CirQueue DeCQueue (CirQueue q) 2、对于循环队列,写出求队列长度的算法: int CQueueLength(CirQueue q); 3、作业:/李德光/数据结构/作业/栈和队列.doc 4、假设一个算术表达式中只包含圆括号,编写一个判别表达式中括号是否正确匹配的算法。 3.3.3 队列的链式存储 在用链式存储结构表示队列时,需要设置队头指针和队尾指针,以便指示队头结点和队尾结点。 链队列 结点定义 3.3.3队列 的存储实现及运算实现 typedef struct LQNode { ElemType data; struct LQNode *next; }QNode; typedef struct {QNode *front,*rear; }LinkQueue; LinkQueue *q; 头结点 ^ …... q-front 队头 队尾 q-rear 头结点 q-front q-rear ^ 链队列基本运算实现 (1)创建一个带头结点的空队 头结点 q-front q-rear ^ (2)判队空 (3)入队 q-front q-rear x入队 ^ x q-front q-rear y入队 x ^ y LinkQueue *Init_LQueue() { LinkQueue *q; QNode *p; q=(LinkQueue *)malloc(sizeof(LinkQueue)); p=(QNode *)malloc(sizeof(QNode)); p-next=NULL; q-front=q-rear=p; return q; } int Empty_LQueue( LinkQueue *q) { if (q-front==q-rear) return 1; else return 0; } void In_LQueue(LinkQueue *q , ElemType x) { QNode *p; p =(QNode *)malloc(sizeof(QNode)); p-data=x; p-next=NULL; q-rear-next=p; q-rear=p; } front rear x出队 x ^ y front re
您可能关注的文档
最近下载
- 快手初级认证内部考试题 .pdf VIP
- 电网技术改造工程预算编制与计算规定(2020年版).pdf VIP
- 防止沉迷网络游戏主题班会PPT课件.pptx VIP
- 发展和改革委员会理论学习中心组集体学习暨2025年度民主生活会会前学习研讨会上的讲话范文.docx VIP
- 新华三集团数字化转型实践.pptx
- 2022年宜宾学院计算机科学与技术专业《数据结构与算法》科目期末试卷.pdf VIP
- 医疗卫生机构护士聘用证明.docx VIP
- 2025年消防设施操作员(消防设备基础知识)通关必刷题库(1000题)含答案 .pdf VIP
- 综合性期刊集群的建设与服务能力提升策略.docx VIP
- 中国期刊集群建设与融合发展的路径研究综述.docx VIP
原创力文档


文档评论(0)