- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- DB32_T 3715-2020 技术交易平台服务规范.docx
- T_CI 263-2024 水上装配式钢结构栈桥(平台)施工技术规程.docx VIP
- 职业技术学院《多轴加工技术》课程标准 数控技术专业.docx VIP
- 14X505-1火灾自动报警系统设计规范图示.pdf VIP
- 《人大代表为人民》课件.pptx VIP
- JC-T 799-2007 装饰石膏板-建材行业标准.pdf VIP
- 2025军队文职考试考前30分【数学1】.pdf VIP
- 湖南省2026届高三九校联盟第一次联考英语试卷(含答案解析).docx
- 中心静脉导管相关感染指南.pptx VIP
- NBSH_T 0162-2021 石油馏分中碱性氮含量的测定 颜色指示剂法.docx VIP
文档评论(0)