- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章栈和队列B--数据结构课件(吴伟民-严蔚敏编著)
数据结构课程的内容;上堂课遗留问题讨论;3.1 栈(Stack) ; 定 义;队列 (Queue)是仅在表尾进行插入操作,在表头进行删除操作的线性表。
表尾即 an 端,称为 队尾 ; 表头即 a1 端,称为队头。
它是一种先进先出(FIFO)的线性表。;链队列示意图;顺序队示意图;问:什么叫“假溢出” ?如何解决?;a3;队空条件 : front = rear (初始化时:front = rear )
队满条件: front = (rear+1) % N (N=maxsize)
队列长度:L=(N+rear-front)% N ;J6 J5;例2 :数组Q[n]用来表示一个循环队列,f 为当前队列头元素的前一位置,r 为队尾元素的位置。假定队列中元素的个数小于n,计算队列中元素的公式为:;问:为什么要设计队列?它有什么独特用途?;循环队列的操作实现;算法:;算法说明:向循环队列的队尾插入一个元素
分 析:
(1) 插入前应当先判断队列是否满
if (( q . rear + 1 ) % QUEUE_MAXSIZE )==q.front)
return ERROR;
(2)插入动作
q.base [q.rear] = e;
q.rear = ( q . rear + 1 ) % QUEUE_MAXSIZE;
;Status EnQueue(SqQueue q, QElemType e)
{//向循环队列 q 的队尾加入一个元素 e
if ( (q.rear+1) % QUEUE_MAXSIZE = = q.front )
return ERROR ;
q.base [ q.rear ] = e; //存储
q.rear = ( q . rear + 1 ) % QUEUE_MAXSIZE;//指针后移
return OK;
}// EnQueue;;3)出队操作;Status DeQueue ( SqQueue q, QElemType e)
{//若队列不空,删除循环队列 q 的队头元素,
//由 e 返回其值,并返回OK
if ( q.front = = q.rear ) return ERROR;//队列空
e = q.base [ q.front ] ;
q.front=(q.front+1) % QUEUE_MAXSIZE ;
return OK;
}// DeQueue;讨论(代本章小结);课程博客:http:///csu_datastructure
课件下载也在相应的邮箱
user: csu_datastructure
文档评论(0)