- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * elem[0] elem[1] … … elem … … … … … … elem[MAXLENG-1] front rear 队列Q的存储结构示意图 4.顺序队列算法举例 定义队列的C类型 #define MAXLENG 100 Typedef struct { ElemType elem[MAXLENG]; int front,rear; } SeQueue; //定义结构变量Q表示队列 SeQueue Q; * (1)进队算法: 假设用Q表示顺序队列,头指针front指向队头元素,rear指向尾元素的后一个空位,, e为进队元素。 int En_Queue( SeQueue Q,Elemtype e) { if ((Q.rear+1)% MAXLENG==Q.front) //若Q已满,退出 return ERROR; Q.elem[Q.rear]=e; //装入新元素e Q.rear++; //尾指针后移一个位置 Q.rear = Q.rear % MAXLENG; //为循环队列 return OK; } /// 0 1 2 MAXLENG-1 /// 0 1 2 MAXLENG-1 rear front rear front * x ... y 0 ... MAXLENG-1 rear front y ... z x 0 ... MAXLENG-1 front rear (2)出队算法 int De_Queue(SeQueue Q,Elemtype e) { if (Q.front==Q.rear) //Q为空队列,退出 return ERROR; e=Q.elem[Q.front]; //取走队头元素,送e Q.front=(Q.front+1)% MAXLENG; //循环后移到一个位置 return OK; } * 思 考 题 1。 如何根据front,rear,maxlength求队列的长度。 2。 在循环队列中,如果用front指向队列的第一个元素,length表示元素的个数,如何设计算法。 typedef struct QUEUE{ ElemType elem[MAXLENGTH]; int front,length;} QUEUE; void iniQueue(QUEUE Q); int EnQueue(QUEUE Q,ElemType x); int DeQueue(QUEUE Q,ElemType x); * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4 0 4 5 0 4 2 5 0 4 (1) 4进栈 (2) 0进栈 (3) 5进栈 (4) 2进栈 3.2 栈的应用举例 栈的基本用途----保存暂时不用的数或存储地址。 3.2.1 数制转换 例. 给定十进制数 N=1348,转换为八进制数 R=2504 1.依次求余数,并送入栈中,直到商为0。 (1) r1=1348%8=4 //求余数 n1=1348/8=168 //求商 (2) r2=168%8=0 //求余数 n2=168/8=21 //求商 (3) r3=21%8=5 //求余数 n3=21/8=2 //求商 (4) r4=2%8=2 //求余数 n4=2/8=0 //求商 2.依次退栈,得R=2504 * ( { ( { { ( { ( (1)“(”进栈 (2)“{”进栈 (3)“{”进栈 (4)“{”退栈 { ( (5)“]”与“{”不匹配 3.2.2 判定表达式中的刮号匹配 1.刮号匹配的表达式 例. {...(...( )...)
文档评论(0)