数据结构实验4实验报告

  • 格式:doc
  • 大小:105.50 KB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

暨南大学本科实验报告专用纸

课程名称数据结构实验成绩评定

实验项目名称习题3.16 3.18 4.13 4.16 指导教师孙世良

实验项目编号实验4 实验项目类型实验地点实验楼三楼机房学生姓名林炜哲学号2013053005

学院电气信息学院系专业软件工程

实验时间年月日午~月日午温度℃湿度(一)实验目的

掌握栈和队列这两种抽象数据结构类型的特性,并能在相应的应用问题中正确选用它们。

掌握栈类型的实现方法,即两种储存结构表示时的基本操作实现算法。

熟悉串的七种基本操作定义,并能利用这些基本操作实现串的其他各种操作的方法。

熟练掌握在串的定长顺序储存结构上实现串的各种操作的方法。

了解串操作的应用方法和特点。

(二)实验内容和要求

3.16火车调度站的入口处有n节硬席或软席车厢(分别以H和S表示)

等待调度,试编写算法,输出对这节车厢进行调度的操作(即入账或出栈操作)序列,以使所有的软席车厢都被调到硬席车厢之前。

3.18试写一个判别表达式中开、闭括号是否配对出现的算法。

4.13编写算法,从串s中删除所有和串t相同的子串。

4.16编写算法,实现串的基本操作StrCompare(S,T)。

(三)主要仪器设备

实验环境:Microsoft Visual Studio 2012

(四)源程序

3.16程序:

#include

#include

#include

void Switch(char *rs, char *S){ int i,k,len;

strcpy(rs,"\0");

k=0;

len=strlen(S);

for(i=0;i

if(S[i] =='S')

strcat(rs,"IO");

else{

strcat(rs,"I");

k++;

}

while(k>0){

k--;

strcat(rs,"O");

}

}

int main()

{

char Queue[20];

char rs[40];

scanf("%s",Queue);

Switch(rs,Queue);

puts(rs);

return 0;

}

3.18程序:

#include

int main()

{

char queue[20],x;

int i=0;

while((x=getchar())!=EOF){ if(x == '(')

i++;

else

if(x == ')')

i--;

if(i<0){

printf("error\n");

return 0;

}

}

printf("right\n");

return 0;

}

4.13程序:

#include

#include

int main()

{

char s[20];

scanf("%s",s);

char t[20];

scanf("%s",t);

for(int i=0;i

int k=0,j=i;

for(;k

if(s[j]==t[k])

continue;

else

break;

if(k==strlen(t)){

s[i]='\0';

char* str=s+i+k;

strcat(s,str);

i--;

}

}

}

printf("%s",s);

return 0;

}

4.16程序:

#include

#include

int StrCompare(char* s,char*t){ int i;

for(i=0;i<=strlen(s);i++){ if(s[i]==t[i])

continue;

if(s[i]>t[i])

return 1;

if(s[i]

return -1;

}

if(i==strlen(s)+1)

return 0;

}

int main()

{

char str1[100],str2[100];

scanf("%s",str1);

scanf("%s",str2);

printf("%d",StrCompare(str1,str2));

return 0;

}

(五)数据调试

3.16调试结果:

3.18调试结果:

4.13调试结果:

4.16调试结果:

(六)实验结果分析与总结

3.16:输入序列“HSHHSS”,其中H代表硬座,S代表软座,输出结果

为“IIOIIIOIOOOO”,其中I代表入站,O代表出站。检验可得该结果正确,程序运行正确。

3.18:输入表达式”34*(35+36)/(1+2)”,判断结果为right;

输入表达式”34*35+36)/(1+2”,判断结果为error。

可见程序运行正确。

4.13:输入串s:6547832783456783,输入串t:783。从串s中删除串t,

得到结果为:6542456。可见程序运行正确。

4.18:输入”abcdefg”和”bcd”比较,程序返回负值;

输入”polont”和”abgek”比较,程序返回正值;

输入”abdc”和”abdc”比较,程序返回0。

可见程序运行正确。

总结:

1 通过本次实验掌握了栈和串的一些基本操作,如构造空的栈,入栈和出栈,返回栈顶元素,删除栈顶元素等;串的定义以及串的建立,计算串的长度,删除子串、比较串的大小以及相关函数的定义与调用。

2 “后进先出”是栈的一个特点,后进栈的元素先进行处理,通常栈用顺序表存储,分配一块连续的存储空存放栈中的元素,并用一个元素指向当前的栈顶。

3 串是一种特殊的线性表,它的每一个结点仅由一个字符组成,因此存储

串的方法也就是存储线性表的一般方法。