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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构实验教案信息1.docx

1、数据结构实验教案信息1数 据 结 构 实 验 教 案(使用C语言)数学与计算机科学学院张 青实验1:顺序表的基本操作一、实验目的:1. 会定义线性表的顺序存储类型;2. 熟悉C程序的基本结构,掌握程序中的用户头文件、实现文件和主文件之间的相互关系及各自的作用;3. 熟悉对线性表的一些基本操作和具体的函数定义;4. 熟悉C操作环境的使用以及多文件程序的输入、编辑、调试和运行的全过程。二、实验要求:1. 理解实验内容中所给出程序的含义;2. 用此程序上机运行、调试;3. 屏幕显示结果,能结合程序进行分析;4. 能按照你对顺序表操作的需要,重新改写主函数并运行。实验内容:训练对顺序表的插入和取数据元

2、素操作,顺序插入、取打印1-10这几个数字。三、实验程序:#include#define maxsize 100typedef int datatype;typedef struct datatype listmaxsize; int size;seqlist; slinitiate(seqlist*L1); slinsert(seqlist*L2,int i,datatype x); slget(seqlist L3,int i,datatype*x); main(void) seqlist mylist; int i,x; slinitiate(&mylist); for(i=0;i10;

3、i+) if(slinsert(&mylist,i,i+1)=0) printf(wrong!n); return; for(i=0;isize=0; int slinsert(seqlist*L2,int i,datatype x) int j; if(L2-size=maxsize) printf(the list is full,cant be inserted!n); return 0; else if(iL2-size) printf(the parameter is illegal!n); return 0; else for(j=L2-size;ji;j-)L2-listj=L2

4、-listj-1; L2-listi=x; L2-size+; return 1; int slget(seqlist L3,int i,datatype*x) if(iL3.size-1) printf(the parameter i is illegal!n); return 0; else *x=L3.listi; return 1; _四、实验结果: 1 2 3 4 5 6 7 8 9 10五、程序各部分功能及实验结果分析:实验2: 不带头结点单链表的基本操作一、实验目的:1. 会定义单链表的结点类型;2. 熟悉对单链表的一些基本操作和具体的函数定义;3. 了解和掌握单链表的调用格式。

5、二、实验要求:1. 认真阅读和掌握实验内容所给的程序,并上机运行;2. 保存程序运行结果,并结合程序 进行分析;3. 尝试自己调试修改程序并试运行。三、实验内容:编写算法实现不带头结点单链表的初始化操作、插入操作和删除操作。四、实验程序:#include#include#includetypedef int datatype;typedef struct nodedatatype data;struct node*next;nslnode;void nsllinitiate(nslnode*head);int nsllinsert(nslnode*head,int i,datatype x);

6、int nslldelete(nslnode*head,int i,datatype*x);void main(void) datatype test6=64,6,7,89,12,24; nslnode*head,*p;int n=6,i,*x;nsllinitiate(&head);for(i=1;i=1;i-) nslldelete(&head,i,x); printf(“%d”,*x);void nsllinitiate(nslnode*head)*head=NULL;int nsllinsert(nslnode*head,int i,datatype x) nslnode*p,*q;

7、int j; p=*head;j=1;while(p!=NULL&jnext;j+;if(j!=i-1&i!=1)printf(“插入位置参数错!”);return 0;if(q=(nslnode*)malloc(sizeof(nslnode)=NULL)exit(1);q-data=x;if(I=1) q-next=*head; *head=q;elseq-next=p-next;p-next=q;return 1;int nslldelete(nslnode*head,int i,datatype*x)nslnode*p,*q;int j;p=*head;j=1;while(p!=NULL

8、&p-next!=NULL&jnext;j+if(j!=i-1&i!=1) printf(“删除位置参数错!”); return 0;if(i=1) q=p; head=(*head)-next;else q=p-next; p-next=p-next-next;*x=q-data;free(q);return 1;五、运行结果:24 12 89 7 6 64六、程序各部分功能及实验结果分析:实验3 :带头结点单链表中数据就地逆置一、实验目的:1. 会定义单链表的结点类型;2. 熟悉对单链表的一些基本操作和具体的函数定义;3. 了解和掌握单链表的调用格式。二、实验要求:1. 认真阅读和掌握实验

9、内容所给的程序,并上机运行;2. 保存程序运行结果,并结合程序 进行分析;3. 尝试自己调试修改程序并试运行。三、实验内容:编写算法实现带头结点单链表的就地逆置,即利用原带头结点单链表的结点空间把数据元素序列逆置。四、实验程序:#include#include#includetypedef int datatype;typedef struct snode datatype data; struct snode*next;slnode;sllinitiate(slnode*head);int sllinsert(slnode*head,int i,datatype x);int slldele

10、te(slnode*head,int i,datatype x);int sllget(slnode*head,int i,datatype*x);int sllnotempty(slnode*head);linlistsurt(slnode*head);linlistinsert(slnode*head,datatype x);converse(slnode*head);main(void) datatype test6=64,6,7,89,12,24; slnode*head,*p; int n=6,i; sllinitiate(&head); for(i=1;inext; while(p

11、!=NULL) printf(%d,p-data); p=p-next; sllinitiate(slnode*head)if(*head=(slnode*)malloc(sizeof(slnode)=NULL)exit(1);(*head)-next=NULL;int sllinsert(slnode*head,int i,datatype x)slnode*p,*q;int j;p=head;j=0;while(p!=NULL&jnext;j+;if(j!=i-1)printf(the insert-position parameter is wrong!n);return 0;if(q=

12、(slnode*)malloc(sizeof(slnode)=NULL)exit(1);q-data=x;q-next=p-next;p-next=q;return 1;int slldelete(slnode*head,int i,datatype x)slnode*p,*q;int j;p=head;j=0;while(p-next!=NULL&jnext;j+;if(j!=i-1)printf(the delete-position parameter is wrong!n);return 0;q=p-next;p-next=p-next-next;x=q-data;free(q);re

13、turn 1;int sllget(slnode*head,int i,datatype*x)slnode*p;int j;p=head;j=0;while(p-next!=NULL&jnext;j+;if(j!=i)printf(the get-position parameter is wrong!n);return 0;*x=p-data;return 1;int sllnotempty(slnode*head)if(head-next=NULL)return 0;else return 1;linlistsort(slnode*head)slnode*curr,*pre,*p,*q;p

14、=head-next;head-next=NULL;while(p!=NULL) curr=head-next; pre=head; while(curr!=NULL&curr-datadata) pre=curr; curr=curr-next; q=p; p=p-next; q-next=pre-next; pre-next=q;linlistinsert(slnode*head,datatype x) slnode*curr,*pre,*q; curr=head-next; pre=head; while(curr!=NULL&curr-datanext; if(q=(slnode*)m

15、alloc(sizeof(slnode)=NULL)exit(1); q-data=x; q-next=pre-next; pre-next=q;converse(slnode*head)slnode*p,*q;p=head-next;head-next=NULL;while(p!=NULL) q=p; p=p-next; q-next=head-next; head-next=q;0五、实验结果:64,6,7,89,12,2489 64 25 24 12 7 6六、程序各部分功能及实验结果分析:实验4:顺序堆栈的基本操作一、实验目的:1. 会定义顺序堆栈抽象数据类型;2. 熟悉顺序堆栈的基本

16、结构;3. 熟悉对顺序堆栈的一些基本操作和具体的函数定义;二、实验要求:1. 理解实验内容中所给出程序的含义;2. 用此程序上机运行、调试;3. 屏幕显示结果,能结合程序进行分析;4. 能按照你对顺序堆栈操作的需要,重新改写主函数并运行。三、实验内容:打印依次出栈的数据元素序列四、实验程序:#include#include#define maxstacksize 100typedef int datatype;typedef structdatatype stackmaxstacksize;int top;seqstack;void stackinitiate(seqstack*s);int

17、stacknotempty(seqstack s);int stackpush(seqstack*s,datatype x);int stackpop(seqstack*s,datatype*d);int stacktop(seqstack s,datatype*d);void main(void) seqstack mystack; int i,x; stackinitiate(&mystack); for(i=0;itop=0;int stacknotempty(seqstack s) if(s.toptop=maxstacksize) printf(stack is full,cant

18、insert!n); return 0; else s-stacks-top=x; s-top+; return 1; int stackpop(seqstack*s,datatype*d) if(s-toptop-; *d=s-stacks-top; return 1; int stacktop(seqstack s,datatype*d) if(s.top=0) printf(stack is empty!n); return 0; else *d=s.stacks.top-1; return 1; 五、程序运行结果:10 9 8 7 6 5 4 3 2 1六、程序各部分功能及实验结果分析

19、:实验5:判断一个字符序列是否是回文一、实验目的:1. 会定义顺序堆栈和顺序循环队列的抽象数据类型;2. 熟悉顺序堆栈和顺序循环队列的基本结构,掌握程序中的用户头文件、实现文件和主文件之间的相互关系及各自的作用;3. 熟悉对顺序堆栈和顺序循环队列的一些基本操作和具体的函数定义;二、实验要求:1. 理解实验内容中所给出程序的含义;2. 用此程序上机运行、调试;3. 屏幕显示结果,能结合程序进行分析;4. 能按照你对顺序堆栈和顺序循环队列操作的需要,重新改写主函数并运行。实验内容:编程序判断一个字符序列是否是回文。要求程序从键盘输入一个字符串,字符串长度小于等于80,用于判断回文的字符串中不包括字

20、符串的结束标记符。三、实验内容: 利用顺序堆栈和顺序循环队列,判断一个输入的字符序列是否是回文四、实验程序:#include#include#define maxsize 80typedef char datatype;typedef struct datatype listmaxsize; int top;seqstack;typedef struct datatype listmaxsize; int front; int count;seqcqueue;void scqinitiate(seqcqueue*q);int scqappend(seqcqueue*q,datatype x);

21、int scqdelete(seqcqueue*q,datatype*d);int scqgettop(seqcqueue q,datatype*d);int scqnotempty(seqcqueue q);void ssinitiate(seqstack*s);int sspush(seqstack*s,datatype x);int sspop(seqstack*s,datatype*d);int ssgettop(seqstack s,datatype*d);int ssnotempty(seqstack s);void palindrome(char str,int n) seqst

22、ack mystack; seqcqueue myqueue; char x,y; int i; ssinitiate(&mystack); scqinitiate(&myqueue); for(i=0;ifront=0; q-count=0;int scqappend(seqcqueue*q,datatype x) int rear; if(q-count=maxsize) printf(队列已满无?!n); return 0; else rear=q-front+q-count; q-listrear=x; q-count+; return 1; int scqdelete(seqcqueue*q,datatype *d) if(q-count=0) printf(循环队列已空!n); return 0; else *d=q-listq-front; q-front=(q-front+1)%maxsize; q-count-; return 1; int scqgettop(seqcqueue q,datatype*d) if(q.count=0) printf(循环队列已空!n); return 0; else *d=q.listq.front; return 1; int scqnotempty(seqcqueue

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

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