实验报告.docx

上传人:b****6 文档编号:2988335 上传时间:2022-11-16 格式:DOCX 页数:63 大小:117.17KB
下载 相关 举报
实验报告.docx_第1页
第1页 / 共63页
实验报告.docx_第2页
第2页 / 共63页
实验报告.docx_第3页
第3页 / 共63页
实验报告.docx_第4页
第4页 / 共63页
实验报告.docx_第5页
第5页 / 共63页
点击查看更多>>
下载资源
资源描述

实验报告.docx

《实验报告.docx》由会员分享,可在线阅读,更多相关《实验报告.docx(63页珍藏版)》请在冰豆网上搜索。

实验报告.docx

实验报告

 

《数据结构》

实验报告

 

班级学号:

姓名:

 

《数据结构》

实验报告

 

学院:

信息科学与技术学院

专业:

软件技术专业

学期:

2010~2011学年第二学期

班级:

学号:

姓名:

实验1函数、指针、结构体复习

院(系):

信息科学与技术学院课程名称:

数据结构教师签名:

班级

学号

实验室

专业

姓名

计算机号

实验名称

所用软件

实验成绩

1.1实验目的

1.掌握C语言的语法并由算法形成相应的程序。

2.熟练掌握C语言函数调用的相关知识点。

3.熟练掌握C语言的指针和结构体相关知识点。

4.理解数据结构的基本概念。

1.2实验准备

1.复习C语言的函数调用、指针、结构体的相关知识点。

2.算法的概念和算法分析等知识。

3.C语言程序设计有关函数及数组等的知识及编程环境的使用方法。

4.复习课堂讲解的理论内容。

1.3实验任务

1.在提示/**********blank**********/下面填写合适的内容完成程序设计。

编写一个程序,判断一个字符串是否为“回文”(顺序和倒读都一样的字符串称为“回文”),并分析算法的时间复杂度。

提示:

实现本程序需要设计两个函数。

①主函数main,数据的输入和输出在该函数中完成。

②自定义函数func,判断串s是否为回文。

采用的方法是:

用flag表示是否为回文。

用i从左向右扫描字符串s,用j从右向左扫描字符串s,若s[i]与s[j]不相等,则flag=0(表示不是回文)并退出循环,否则,继续比较直到i

/*判断指定字符串是否回文*/

#include

intfunc(char*str)

{

inti,j,t,flag;

t=strlen(str);

for(i=0,j=t-1;i<=t/2;i++,j--)

{

if(str[i]==str[j])continue;

else

{flag=0;break;}

}

if(i>=t/2)flag=1;

returnflag;

}

voidmain()

{

/********************blank********************/

____________________;/*填空位置1:

变量定义*/

____________________;/*填空位置2:

从键盘输入需要判定的字符串*/

____________________;/*填空位置3:

调用func函数*/

____________________;/*填空位置4:

根据返回值flag的值,输出判定结果*/

}

该算法的时间复杂度是:

____________________。

2.定义函数intf(char*x,chary)判断x所指的字符串是否包含字符y,若是则函数返回1,否则返回0。

写出完整的源程序代码。

#include

#include

intf(char*x,chary)/*写出自定义函数f的函数体部分,实现函数功能*/

{

 

}

voidmain()

{

char*str,ch;

intt;

gets(str);

scanf("%c",&ch);

t=f(str,ch);

printf("t=%d\n",t);

}

3.用结构体类型编写一个程序,输入一个学生的学号、姓名及3门课的成绩,计算并输出其平均成绩。

写出完整的源程序代码。

#include

structstudent

{

intid;

charname[10];

floatscore[3];

}s;

main()/*写出main函数的函数体部分,实现函数功能*/

{

 

}

实验2线性表

院(系):

信息科学与技术学院课程名称:

数据结构教师签名:

班级

学号

实验室

专业

姓名

计算机号

实验名称

所用软件

实验成绩

2.1实验目的

1.掌握顺序表的基本特点。

2.熟练掌握顺序表的建立、查找、插入和删除等操作。

3.掌握单链表的基本特点。

4.熟练掌握单链表的建立、插入、删除等基本操作。

5.理解循环链表、双向链表的含义及其特点。

6.了解循环链表、双向链表的基本操作。

2.2实验准备

1.线性表顺序存储结构的表示。

2.顺序表的基本操作:

顺序表的建立、查找、插入、删除。

3.线性表链式存储结构的表示。

4.链表的基本操作:

链表的建立、查找、插入、删除。

2.3实验任务

1.实现顺序表的各种基本操作。

(1)源程序代码。

#include

#defineMaxsize100

typedefintdatatype;

typedefstructseqnode/*顺序表的类型定义*/

{

datatypelist[Maxsize];/*定义一个存放顺序表的一维数组list*/

intlen;/*定义线性表的实际长度*/

}seqlist;

voidcreate(seqlist*L)/*建立一个顺序存储的线性表*/

{

inti;

printf("Pleaseinputthelenoftheseqlist:

");/*从键盘输入当前顺序表的实际长度*/

scanf("%d",&(*L).len);

printf("Pleaseinputtheeveryelementoftheseqlist:

");

for(i=0;i<(*L).len;i++)/*从键盘输入顺序表的每个元素*/

scanf("%d",&(*L).list[i]);

printf("Outputtheeveryelementoftheseqlist:

\n");

for(i=0;i<(*L).len;i++)/*顺序表建立成功后,输出整个顺序表*/

printf("%5d",(*L).list[i]);/*运行结果

(1)*/

printf("\n");

}

voidaccess(seqlist*L,inti)/*根据指定位置访问线性表*/

{

if((i<0)||(i>(*L).len-1))/*判断给定位置是否为合法取值*/

printf("Theplaceisnotcorrect!

\n");

else

printf("%d\n",(*L).list[i]);/*运行结果

(2)*/

}

voidbefore_after(seqlist*L,inti)/*根据指定位置寻找其前趋元素和后继元素*/

{

if((i<0)||(i>(*L).len-1))

printf("Theplaceisnotcorrect!

\n");

elseif(i==0)

printf("%d\n",(*L).list[i+1]);

elseif(i==(*L).len-1)

printf("%d\n",(*L).list[i-1]);

elseif((i>0)&&(i<(*L).len-1))

printf("%d,%d\n",(*L).list[i-1],(*L).list[i+1]);/*运行结果(3)*/

}

voidsearch(seqlist*L,intkey)/*根据给定元素key查找顺序表*/

{

intm;

for(m=0;m<(*L).len;m++)

{

if((*L).list[m]!

=key)

continue;

else

{

printf("Seachingisseccessful!

\n");

printf("Theplaceofthesearchkeyis:

%d\n",m);

break;

}

}

if(m>=(*L).len)

printf("Theseqlisthasnothekey!

\n");/*运行结果(4)*/

}

voiddelete(seqlist*L,inti)/*删除顺序表的元素*/

{

intm;

printf("Outputtheeveryelementoftheseqlistbeforedeleting:

\n");/*删除前输出顺序表中的所有元素*/

for(m=0;m<(*L).len;m++)

printf("%5d",(*L).list[m]);/*运行结果(5)*/

printf("\n");

for(m=i;m<(*L).len;m++)/*删除位置之后的所有元素依次左移一位*/

(*L).list[m]=(*L).list[m+1];

(*L).len--;

printf("Outputtheeveryelementoftheseqlistafterdeleting:

\n");/*删除后输出顺序表中的所有元素*/

for(m=0;m<(*L).len;m++)

printf("%5d",(*L).list[m]);/*运行结果(6)*/

printf("\n");

}

voidinsert(seqlist*L,inti,inte)/*在顺序表指定位置i后插入元素e*/

{

intm;

printf("Outputtheeveryelementoftheseqlistbeforeinserting:

\n");/*插入前输出顺序表中的所有元素*/

for(m=0;m<(*L).len;m++)

printf("%5d",(*L).list[m]);/*运行结果(7)*/

printf("\n");

(*L).len++;

for(m=(*L).len-1;m>=i;m--)/*插入位置之后的元素依次右移一位*/

(*L).list[m+1]=(*L).list[m];

(*L).list[i]=e;/*在指定位置i上插入元素e*/

printf("Outputtheeveryelementoftheseqlistafterinserting:

\n");/*插入后输出顺序表中的所有元素*/

for(m=0;m<(*L).len;m++)

printf("%5d",(*L).list[m]);/*运行结果(8)*/

printf("\n");

}

voidmain()

{

staticseqlist*L;

inti,e;

printf("\n--------------------function:

create--------------------\n");

create(L);/*调用函数create建立一个顺序表*/

printf("\n--------------------function:

access-----------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1