网站大量收购独家精品文档,联系QQ:2885784924

第三章队列的基本操作.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章队列的基本操作

队列的基本操作:构造空队列、判断队列是否为空、插入新的队尾元素、返回队头指针、删除队头元素、测量队列的长度、输出、置空、销毁。 明确:先进先出。 程序代码: #includestdio.h #includestdlib.h #define OVERFLOW -2 #define OK 1 typedef int QElemType; //单链队列 typedef int Status; typedef struct QNode //结点结构 { QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct //链队结构 { QueuePtr front; //队头指针 QueuePtr rear; //队尾指针 }LinkQueue; //函数声明 Status InitQueue(LinkQueue Q); void QueueEmpty(LinkQueue Q); Status EnQueue(LinkQueue Q,QElemType e); int QueueLength(LinkQueue Q); Status visit(QElemType e); Status QueueTraverse(LinkQueue Q,Status (*visit)(QElemType)); Status GetHead(LinkQueue Q,QElemType e); Status DeQueue(LinkQueue Q,QElemType e); Status DestroyQueue(LinkQueue Q); void ClearQueue(LinkQueue Q); //主函数 void main() { int i,n; QElemType e,e1,e2,e3; LinkQueue Q; InitQueue(Q); QueueEmpty(Q); printf(请输入所要构造的队列中的元素个数:\n); scanf(%d,n); printf(请输入队列中具体的元素:\n); for(i=0;in;i++) { scanf(%d,e); EnQueue(Q,e); } QueueLength(Q); printf(队列中的元素依次为:\n); QueueTraverse(Q,visit); printf(初始时,队列的队头元素为:%d\n,GetHead(Q,e1)); DeQueue(Q,e2); printf(删除后,队列的队头元素为:%d\n,GetHead(Q,e3)); ClearQueue(Q); printf(清空队列后,Q.front=%u Q.rear=%u Q.front-next=%u\n,Q.front,Q.rear,Q.front-next); DestroyQueue(Q); printf(销毁队列后,Q.front=%u Q.rear=%u\n,Q.front,Q.rear); } //构造一个空队列Q Status InitQueue(LinkQueue Q) { Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q.front) //存储分配失败 exit (OVERFLOW); Q.front-next=NULL; printf(构造一个空队列成功!\n); return OK; } //判断队列是否为空 void QueueEmpty(LinkQueue Q) { if(Q.front-next==NULL) printf(TRUE!\n); else printf(FALSE!\n); } //插入元素e为Q的新的队尾元素 Status EnQueue(LinkQueue Q,QElemType e) { QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode)); if(!p) //存储分配失败 exit(OVERFLOW); p-data=e; p-next=NULL; Q.rear-next=p; Q.rear=p; return OK; } //返回Q的元素个数,即为队列的长度 特别注意:与栈不同 int QueueLength(LinkQueue Q) { int i=0; QueuePtr p; p=Q.front; while(Q.rear!=p) { i++; p=p-next; } printf(现在的栈的长度为:%d\n,

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档