数据结构实验三队列应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 队列基本操作
一、实验目的
掌握队列的基本操作:初始化、判空、判满、入队、出队、取队列首元素等运算。
二、实验要求包含有头文件和main函数;
1.格式正确,语句采用缩进格式;
2.设计子函数实现题目要求的功能;
3.编译、连接通过,熟练使用命令键;
4.运行结果正确,输入输出有提示,格式美观。
三、实验设备、材料和工具
1.奔腾2计算机或以上机型
2.turboc2,win-tc
四、实验内容和步骤
实验内容:
1.分析程序。
2.完成程序编写和补充
步骤:
3.确定数据的结构;
4.利用main函数调用各子函数;
5.调试、分析运行结果。
五、实验报告要求
1.根据实验内容初步设计好程序,并从理论上排除错误;
2.针对程序的健壮性准备好测试数据;
3.结果分析中如实填写运行后的结果,记录调试过程中产生的重要问题和解决方法。
六、根据实验过程填写下面内容
构建栈头文件,文件名称seqstack.h
构建队列头文件,文件名称seqqueue.h
基础部分
1.构建队列逆置的程序,补充以下程序,完成运行和调试。
#include "stdio.h"
#include "seqqueue.h"
#include "seqstack.h"
void proc(SeqQueue *q)
{
SeqStack s;
char a;
InitStack(&s);
while(!IsEmpty(q))
{
DeleteQueue(q,&a);
Push(&s,a);
}
while(!IsEmptys(&s)){
Pop(&s,&a);
EnterQueue(q,a);
}
}
void main()
{
SeqQueue q;//定义队列q
定义字符变量temp char str[50],temp; //定义字符数组str[50],
int i; //定义整型变量i
InitQueue(&q); //初始化队列q
请输入队列内容:\0");
printf("
gets(str); //输入字符串
for(i=0;str[i]!='\0';i++)
{
temp=str[i]; //输出字符的每一个字符
字符串每一个字符入队q
EnterQueue(&q,temp);//
}
printf("\n");
proc(&q); //调用proc函数,传递队列q的地址 while(!IsEmpty(&q)) //while循环,如果队列不为空则循环 {
DeleteQueue(&q,&temp); //出队,出队值存放于temp变量中
printf("%c",temp);
//输出temp变量值
}
printf("\n");
}
2.利用上一题的队列逆置函数(返回值、函数参数及部分语句稍作修改),编写一个程序,完成判断回文序列的程序。
(回文序列不一定用&居中,可以是任意形式的,例如:123321或1234321)
#include "stdio.h"
#include "seqqueue.h"
#include "seqstack.h"
SeqQueue proc(SeqQueue q)
{
SeqStack s;
char x;
InitStack(&s);
while(!IsEmpty(&q))
{
DeleteQueue(&q,&x);
Push(&s,x);
}
while(!IsEmptys(&s)){
Pop(&s,&x);
EnterQueue(&q,x);
}
return q;
}
void main()
{
SeqQueue x,y;
char str[50],temp;
char a,b;
int i;
InitQueue(&x);
InitQueue(&y);
请输入队列内容:\n");
printf("
gets(str);
for(i=0;str[i]!='\0';i++)
{
temp=str[i];
EnterQueue(&x,temp);
}
printf("\n");
y=proc(x);
while(!IsEmpty(&x))
{
DeleteQueue(&x,&a);
DeleteQueue(&y,&b);
if(a!=b) break;
}
if(IsEmpty(&x)) printf("yes\n");
else printf("no\n");
}
提高部分
3.完成P81页习题3.7的各个算法的编写,并写出完整程序验证算法的正确性(参照教材上
链队列的算法改写,尾指针用rear表示)。