数结构
实训报告
() 应程序名称求··································3
(二) 应程序体设计目·································3
(三) 应程序简介···········································3
(四) 应程序总体结构图代码····························4
(五) 测试结果··············································10
(六) 意处··············································14
(七) 课程设计中存问题··································14
(八) 设计实践程中体会··································14
(九) 参考文献··············································14
() 应程序名称求
名称:舞伴问题
假设周末舞会男士女士进入舞厅时排成队跳舞开 始时次男队女队队头出配成舞伴两队初始数相 较长队中未配者等轮舞曲现求写算法模拟述舞伴配 问题
(二)应程序体设计目
先入队男士女士先出队配成舞伴该问题具体典型先进先出特性队列作算法数结构
算法中假设男士女士记录存放数组中作输入然次扫描该数组元素根性决定进入男队女队两队列构造完成次两队前队头元素出队配成舞伴直某队列变空止时某队等配者算法输出队列中等者数排队头等者名字()轮舞曲开始时第获舞伴
(三)应程序简介
整程序做舞伴配问题系统运队列实现初始化入队出队取头判断队列空遍历队列6功数组具全局局部静态动态特定存储属性结构体数组存储信息(姓名身高)队列(头指针first尾指针last计数器count)浪费存储空间假定预分配队列空间100(QueueSize)整程序vc++60环境运行
(1)初始化队列 initqueue(squeue *p)音乐
初始条件:队列squeue存
操作结果:构造空队列squeueP指firstlastcount零
(2) 建立序队列greatequeue走进舞池
定义整型total存放跳舞数Total参加舞会数跳舞分成男(mM)女(fF)两队
(3)入队append()选择舞伴
功输入跳舞员信息(姓名性)
(4) 出队 dequeue()开始跳舞
定义整型 MtmpFtmp时变量记住队头男队女队队头分赋值MtmpFtmp前已定义音乐回合数round3舞池中配三次显示出前跳舞果男队女队空重新排队里while循环表示直跳队伍结束
(5) 判断队空 empty(squeue *p)查队伍
查队伍中没继续跳舞
(6) 取队头gethead(squeue *p)挑选第位舞伴
取出队头元素
(7) 遍历队列display(squeue *p)
序输出数
(四) 应程序总体设计结构图代码
开始
调menu菜单函数
进入wheil()循环
输入0~1中数值选择相应操作
结束
输入否零?
调end函数
否
调相应函数 完成相应功
舞伴配问题代码
#include
#include
#include
#include
#define maxsize 50
#define QueueSize 100 假定预分配队列空间100元素
#define person int
#define true 1
#define false 0
typedef struct Person
{
char name[20]
char sex性f表示女m表示男
float height
}Person
typedef struct squeue
{
Person date[QueueSize]
int first
int last
int count
}squeue
squeue *Total NULL 总舞池
squeue *MdancersNULL 男性队列
squeue *FdancersNULL 女性队列
int round3 回合数
int empty(squeue *p)
void display(squeue *p)
初始化
void initqueue(squeue *p)
{
p(squeue*) malloc ( sizeof(squeue) )
if(p NULL)
{
p>first0
p>last0
p>count0
}
else
{
printf(memory overflow)
}
}
建立序队列
int greatequeue(int total)
{
int i
for(i0i
if(Total>date[i]sex 'M' || Total>date[i]sex'm')
{
Mdancers>last(Mdancers>last+1)maxsize
Mdancers>date[Mdancers>last]Total>date[i]
}
else if(Total>date[i]sex 'F' || Total>date[i]sex 'f')
{
Fdancers>last(Fdancers>last+1)maxsize
Fdancers>date[Fdancers>last]Total>date[i]
}
}
return 1
}
入队
int append()
{
int totali
printf(跳舞\n)
scanf(d&total)
if( total > maxsize )
{
printf(\n队列长度溢出)
getch()
return 0
}
else
{
printf(\n次输入队列元素值\n)
getchar()
for( i 0 i < total i++ )
{
printf(请输入姓名)
Total>last (Total>last +1)maxsize
scanf(sTotal>date[Total>last]name)
getchar()
printf(请输入性)
scanf(c&Total>date[Total>last]sex)
printf(sc\n Total>date[Total>last]nameTotal>date[Total>last]sex)
getchar()
}
return total
}
}
出队
int dequeue()
{
int i
int MtmpFtmp 记住队头
MtmpMdancers>first
FtmpFdancers>first
if(empty(Mdancers))
{
printf(Queue is free)
return 0
}
if(empty(Fdancers))
{
printf(Queue is free)
return 0
}
else
{
display(Mdancers)
puts(aa)
display(Fdancers)
getch()
for(i0i
printf(\n\n\n\t\t第d趟舞曲嘀嘀嘀嘀哩哩哩\ni+1)
while(1) 直跳队伍结束
{
if(Mdancers>last Mdancers>first && Fdancers>last Fdancers>first)
printf(\t\t前起跳舞:sc<>sc\nMdancers>date[Mdancers>first+1]nameMdancers>date[Mdancers>first+1]sex
Fdancers>date[Fdancers>first+1]nameFdancers>date[Fdancers>first+1]sex)
Mdancers>first(Mdancers>first+1)maxsize
Fdancers>first(Fdancers>first+1)maxsize
break
}
if(Mdancers>first Mdancers>last) 队伍完重新开始
{
printf(\t\t男队已完成重新开始\n)
Mdancers>firstMtmp
getch()
}
else if(Fdancers>first Fdancers>last) 队伍完重新开始
{
printf(\t\t女队已完成重新开始\n)
Fdancers>firstFtmp
getch()
}
}
getch()
}
return 1
}
队否空
int empty(squeue *p)
{
if(p>first p>last)
{
return 1 队列否空
}
return 0
}
取队头
int gethead(squeue *p)
{
int val
if(empty(p))
{
printf(Queue is free\n)
getch()
return 0
}
valp>first+1 maxsize
printf(s\np>date[val]name)
getch()
return 1
}
遍历队列
void display(squeue *p)
{
int pos (p>first+1)maxsize
if( p>first p>last )
{
printf(队列中元素\n)
}
else
{
printf(队列\n)
while( pos (p>last+1)maxsize )
{
printf(姓名:s性:c\np>date[pos]namep>date[pos]sex)
pos(pos+1)maxsize
}
printf(\n)
printf(头指针位d\np>first)
printf(尾指针位d\np>last)
getch()
}
}
(五)测试结果
界面:
初始化队列
输入数
选择舞伴
开始跳舞
挑选第位舞伴
查队伍
退出程序
(六) 意处
基完成整操作程队列掌握进步加深
(七)课程设计中存问题
次程序惜没想法完成没身高问题考虑进程序问题运行功4时候会出现终止程序次调试成功环境运行成功
(八) 设计实践程中心体会
次实训基数结构实验课队列模版完成课完整程序参考开始队列操作太成熟出现问题学帮助程序完善
(九)参考文献
数结构C语言版 姜梅赵坚编 中国水利水电出版社
数结构 山东民出版社
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档