队列实验.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
队列实验

队列实验 学号: 姓名: 一、实验目的: 1.掌握队列的顺序存储结构 2.掌握队列先进先出运算原则在解决实际问题中的应用 二、实验内容: 利用循环顺序队列打印杨辉三角形。杨辉三角形的特点是两个腰上的数字都为1,其它位置上的数字是其上一行中与之相邻的两个整数之和。所以在打印过程中,第i行上的元素要由第i-1行中的元素来生成。在循环队列中依次存放第i-1行上的元素,然后逐个出队并打印,同时生成第i行中间的(n-2)个元素并入队列。打印的杨辉三角形如下所示: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 三、队列顺序存储结构的基本操作: 杨辉三角形输出的行数可以在程序中由输入控制。 队列的基本操作代码参考如下: #includestdio.h #define TRUE 1 #define FALSE 0 #define MAXSIZE 50 /*队列的最大长度*/ typedef struct { int element[MAXSIZE]; /* 队列的元素空间*/ int front; /*头指针指示器*/ int rear; /*尾指针指示器*/ }SeqQueue; /*初始化操作*/ void InitQueue(SeqQueue *Q) { /* 将*Q初始化为一个空的循环队列 */ Q-front=Q-rear=0; } /*入队操作*/ int EnterQueue(SeqQueue *Q, int x) { /*将元素x入队*/ if((Q-rear+1)%MAXSIZE==Q-front) /*队列已经满了*/ return(FALSE); Q-rear=(Q-rear+1)%MAXSIZE; /* 重新设置队尾指针 */ Q-element[Q-rear]=x; return(TRUE); /*操作成功*/ } /*出队操作*/ int DeleteQueue(SeqQueue *Q, int *x) { /*删除队列的队头元素,用x返回其值*/ if(Q-front==Q-rear) /*队列为空*/ return(FALSE); Q-front=(Q-front+1)%MAXSIZE; /*重新设置队头指针*/ *x=Q-element[Q-front]; return(TRUE); /*操作成功*/ } /*提取队列的队头元素,用x返回其值*/ int GetHead(SeqQueue *Q, int *x) { if(Q-front==Q-rear) /*队列为空*/ return(FALSE); *x=Q-element[Q-front]; return(TRUE); /*操作成功*/ } 四、打印杨辉三角的函数: void PrintTriangle (int N ) { int i,,n,x,temp; SeqQueue Q; InitQueue (Q); EnterQueue (Q,1); /* 第一行元素入队*/ for(n=2;n=N; n++) /*从第二行开始,产生第n行元素并入队,同时打印第n-1行的元素*/ { EnterQueue (Q,1); /* 第n行的第一个元素入队*/ for(i=1;i=n-2;i++) /* 利用队列中第n-1行元素产生第n行的中间n-2个元素并入队*/ { DeleteQueue (Q,temp); Printf(“%d ”,temp); /* 打印第n-1行的元素*/ GetHead(%Q, x); temp=temp+x; /*利用队中第n-1行元素产生第n行元素*/ EnterQueue (Q,temp); } DeleteQueue (Q,x); printf(“%d\n”,x); /* 打印第n-1行的最后一个元素*/ EnterQueue (Q,1); /* 第n行的最后一个元素入队*/ } while(!IsEmpty(Q)) /* 最后一行只出队,不产生新数据。*/ { DeleteQueue(Q,x); printf(%d ,x); } printf(\n\n); } int main() { int N; printf(\nplea

文档评论(0)

153****9595 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档