ImageVerifierCode 换一换
格式:DOCX , 页数:80 ,大小:182.99KB ,
资源ID:21374347      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21374347.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(最新版九江学院 数据结构 实验报告 完整答案Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

最新版九江学院 数据结构 实验报告 完整答案Word文档格式.docx

1、7.2 实验准备 437.3 实验任务 43实验8 排序 538.1 实验目的 538.2 实验准备 538.3 实验任务 53实验9 综合实验 599.1 实验目的 599.2 实验预习 599.3 实验任务 59实验1 函数、指针、结构体复习院(系):信息科学与技术学院 课程名称:数据结构 教师签名:班级B1131学号实验室专业姓名计算机号实验名称所用软件实验成绩1.1 实验目的 1掌握C语言的语法并由算法形成相应的程序。2熟练掌握C语言函数调用的相关知识点。3熟练掌握C语言的指针和结构体相关知识点。4理解数据结构的基本概念。1.2 实验准备1复习C语言的函数调用、指针、结构体的相关知识点

2、。2算法的概念和算法分析等知识。3C语言程序设计有关函数及数组等的知识及编程环境的使用方法。4复习课堂讲解的理论内容。1.3 实验任务1在提示/*blank*/下面填写合适的内容完成程序设计。编写一个程序,判断一个字符串是否为“回文”(顺序和倒读都一样的字符串称为“回文”),并分析算法的时间复杂度。提示:实现本程序需要设计两个函数。主函数main,数据的输入和输出在该函数中完成。自定义函数func,判断串s是否为回文。采用的方法是:用flag表示是否为回文。用i从左向右扫描字符串s,用j从右向左扫描字符串s,若si与sj不相等,则flag=0(表示不是回文)并退出循环,否则,继续比较直到ij不

3、成立。/*判断指定字符串是否回文*/#include int func(char *str)int i,j,t,flag; t=strlen(str); for(i=0,j=t-1;i=t/2) flag=1; return flag;void main()/*blank*/char *s; int flag; /*填空位置1,变量定义*/scanf(%s,s); /*填空位置2,从键盘输入需要判定的字符串*/flag=func(s); /*填空位置3,调用func函数*/ if(flag=0) printf(NOn);else printf(YESn /*填空位置4,根据返回值flag的值,

4、输出判定结果*/该算法的时间复杂度是:_ O_。2定义函数int f(char *x, char y)判断x所指的字符串是否包含字符y,若是则函数返回1,否则返回0。写出完整的源程序代码。string.hint f(char *x,char y) /*写出自定义函数f的函数体部分,实现函数功能*/int i=0,t,flag=0; while(xi!=0) if(y=xi) flag=1; break; i+; char *str,ch; int t; gets(str); scanf(%c,&ch); t=f(str,ch); printf(t=%dn,t);3用结构体类型编写一个程序,输入

5、一个学生的学号、姓名及3门课的成绩,计算并输出其平均成绩。struct student int id; char name10; float score3;s;main() /*写出main函数的函数体部分,实现函数功能*/int i,j;float sum=0.0,aver; printf(Please input the id: scanf(%ds.id);Please input the name:,s.name);Please input the three score: for(i=0;3;i+)%fs.scorei); sum=sum+s.scorei; aver=sum/3;av

6、erage is: %fn,aver);实验2 线性表2.1 实验目的1掌握顺序表的基本特点。2熟练掌握顺序表的建立、查找、插入和删除等操作。3掌握单链表的基本特点。4熟练掌握单链表的建立、插入、删除等基本操作。5理解循环链表、双向链表的含义及其特点。6了解循环链表、双向链表的基本操作。2.2 实验准备 1线性表顺序存储结构的表示。2顺序表的基本操作:顺序表的建立、查找、插入、删除。3线性表链式存储结构的表示。4链表的基本操作:链表的建立、查找、插入、删除。2.3 实验任务1实现顺序表的各种基本操作。(1)源程序代码。#define Maxsize 100typedef int datatyp

7、e;typedef struct seqnode /*顺序表的类型定义*/ datatype listMaxsize; /*定义一个存放顺序表的一维数组list*/ int len; /*定义线性表的实际长度*/seqlist;void create(seqlist *L) /*建立一个顺序存储的线性表*/ int i;Please input the len of the seqlist: /*从键盘输入当前顺序表的实际长度*/(*L).len);Please input the every element of the seqlist: for(i=0;(*L).len;i+) /*从键盘

8、输入顺序表的每个元素*/(*L).listi);Output the every element of the seqlist:ni+) /*顺序表建立成功后,输出整个顺序表*/%5d,(*L).listi); /*运行结果(1)*/void access(seqlist *L,int i) /*根据指定位置访问线性表*/ if(i(*L).len-1) /*判断给定位置是否为合法取值*/ printf(The place is not correct! else%dn /*运行结果(2)*/void before_after(seqlist *L,int i) /*根据指定位置寻找其前趋元素

9、和后继元素*/(*L).len-1) else if(i=0),(*L).listi+1); else if(i=(*L).len-1),(*L).listi-1); else if(i0)&(i%d,%dn,(*L).listi-1,(*L).listi+1); /*运行结果(3)*/void search(seqlist *L,int key) /*根据给定元素key查找顺序表*/ int m; for(m=0;m=(*L).len)The seqlist has no the key! /*运行结果(4)*/void delete(seqlist *L,int i) /*删除顺序表的元素

10、*/Output the every element of the seqlist before deleting: /*删除前输出顺序表中的所有元素*/,(*L).listm); /*运行结果(5)*/ for(m=i;m+) /*删除位置之后的所有元素依次左移一位*/ (*L).listm=(*L).listm+1; (*L).len-;Output the every element of the seqlist after deleting: /*删除后输出顺序表中的所有元素*/ /*运行结果(6)*/void insert(seqlist *L,int i,int e) /*在顺序表

11、指定位置i后插入元素e*/Output the every element of the seqlist before inserting: /*插入前输出顺序表中的所有元素*/ /*运行结果(7)*/ (*L).len+; for(m=(*L).len-1;m=i;m-) /*插入位置之后的元素依次右移一位*/ (*L).listm+1=(*L).listm; (*L).listi=e; /*在指定位置i上插入元素e*/Output the every element of the seqlist after inserting: /*插入后输出顺序表中的所有元素*/ /*运行结果(8)*/

12、 static seqlist *L; int i,e;nfunction:createn create(L); /*调用函数create建立一个顺序表*/accessnPlease input the position:i); /*从键盘输入访问位置i*/ access(L,i); /*调用函数access根据指定位置访问顺序表*/before_aftern /*从键盘输入指定位置i*/ before_after(L,i); /*调用函数before_after根据位置i确定前趋元素和后继元素*/searchnPlease input the search key:e); /*从键盘输入查找

13、元素e*/ search(L,e); /*调用函数search根据关键字e查找顺序表*/deletenPlease input the delete position: /*从键盘输入删除位置i*/ delete(L,i); /*调用函数delete删除指定位置i的元素*/insertnPlease input the insert position: /*从键盘输入插入位置i*/Please input the insert element: /*从键盘输入插入元素e*/ insert(L,i,e); /*调用函数insert在插入位置i上插入元素e*/(2)上机调试上面的源程序,并根据下列

14、原始数据记录程序的运行结果。原始数据顺序表的实际长度10顺序表的元素1,2,3,4,5,6,7,8,9,10访问顺序表的位置i5寻找前趋、后继元素的指定位置i7查找关键字e58删除位置i插入位置i插入元素e28(3)运行结果记录。Output the every element of the seqlist: 1 2 3 4 5 6 7 8 9 10 6 7 , 94 The seqlist has no the key !Output the every element of the seqlist before deleting:Output the every element of th

15、e seqlist after deleting:1 2 3 4 5 7 8 9 10Output the every element of the seqlist before inserting:Output the every element of the seqlist after inserting:1 2 3 4 5 6 7 8 28 9 102在提示/*blank*/下面填写合适的内容完成程序设计。已知一个有序(升序)的顺序表,现有一个数据e,请将e插入到该顺序表中并要求插入后顺序表依然有序。(1)顺序表中原有数据个数为10个,依次是9。(2)需要插入的数据e值为25。(3)注意

16、表长的变化。(4)有序表的插入,需要分两步完成:第一步确定插入位置,第二步在插入位置上插入指定的数据。(5)程序运行结果如图2-1所示。图2-1 实验运行结果typedef struct seqnode /*顺序表的类型定义*/void create(seqlist *L) /*根据已知条件建立一个有序的顺序表*/nnPlease input the length of the ordered seqlist: /*blank*/ /*从键盘输入有序表的实际长度,已知(*L).len=10*/nnPlease input the every element of the ordered seq

17、list: /*blank*/ scanf(/*从键盘输入有序表中的每个元素,9*/void insert(seqlist *L,int e) /*在顺序表指定位置i后插入元素e*/ int i,j,m,n;nnOutput the every element of the seqlist before inserting: for(n=0;n=0;i-) /*blank*/ If ( enext=NULL; /*从头结点开始建立单链表*/ q=H;Please input the length of the linklist: /*根据实际情况从键盘输入表长*/n);Please input the every element: /*从键盘输入线性表的每个元素*/ for(i=1;=n; p=(NODEPTR)malloc(LEN); /*为当前插入链表的结点分配存储空间*/ p-data=e; /*指向结点的指针变量p指向当前要插入的结点*/ q-next=p; /*指向结点的指针变量q指向当前插入结点的前趋结点,将p作为其后继赋值,完成当前结点的插入*/ q=p; /*当前结点完成插入之后,修改指针变量q,为下一次插入做好准备*/ q- return H;

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

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