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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构上机操作实验报告.docx

1、数据结构上机操作实验报告实验一 单链表的基本操作(必做)一、实验目的1.掌握单链表的存储、初始化、插入、删除等操作的程序实现。2.加深对单链表基本概念,基本理论及相应算法的掌握与理解。3.了解链表的处理方式,学习体会简单的单链表程序实现相关知识。二、实验内容1.建立一个链表、设计链表的基本操作实现算法、输出一个链表表,调试并输出结果。2.编写一个程序实现如下功能:让计算机产生出50个09之间的随机数并依次保存到单链表中;输出遍历单链表;从单链表中删除与给定值相等的所有结点;输出遍历单链表;输出单链表长度,调试并输出结果。三、实验步骤1.定义一个链表结构体。2.利用插入功能插入一个结点。3.利用

2、删除功能删除一个结点。四、程序运行测试1.利用插入功能插入一个结点。2.利用删除功能删除一个结点。五、实验报告要求1.绘制链表操作实现的流程图。2.详细给出程序运行测试结果(包括测试数据和测试结果)。3.选试验步骤2-3中的任意一个,给出程序的详细注释。4.参考程序中某一部分功能的改进(选做)5.实验心得与体会6.附录,实验用源程序六、参考源代码#include #include typedef struct LNodeint data;struct LNode *next;Lnode, *LinkList;/假设下面的单链表均为带头结点。void CreatLinkList(LinkList

3、 &L,int j)/建立一个单链表L,数据为整数,数据由键盘随机输入。LinkList p,q; L=(LinkList )malloc(sizeof(Lnode); L-next=NULL; q=L; cout在单链表内输入整数:endl; for(int i=0;ip-data; p-next=q-next; q-next=p; q=p; int PrintLinkList(LinkList &L)/输出单链表L的数据元素 LinkList p; p=L-next; if(L-next=NULL) cout链表没有元素!endl;return 0;cout单链表的数据元素为:;while

4、(p) coutdatanext;coutnext; while(p) i+; p=p-next; cout单链表的数据元素个数为:iendl;int InsertLinkList(LinkList &L, int i, int x)/在单链表L的第I个元素前插入一个数据元素X。 LinkList p,s; int j=0; p=L; while(p&jnext; +j; if(!p|ji-1) coutdata=x; s-next=p-next; p-next=s; return 1;int DeleteLinkList(LinkList &L,int i)/删除单链表L的第I个数据元素。

5、LinkList p,q; int j=0; p=L; while(p-next&jnext; +j; if(!(p-next)|ji-1)coutnext; p-next=q-next; i=q-data; free(q); return 1;void ClearLinkList(LinkList &L)/将单链表L置为空表。L-next=NULL;void DestroyLinkList(LinkList &L)/销毁单链表L。 LinkList p,q; p=L-next; while(L-next!=NULL) q=p-next; L-next=q; free(p);p=q; free

6、(L); cout链表已经被销毁!endl;void main()/调用上面的各函数,运行并检验程序是否正确。 LinkList L; int i,j,x; cout-endl; cout 单链表实验,按提示操作endl; cout-endl; coutj; CreatLinkList(L,j); LinkListLengh(L); PrintLinkList(L); couti; coutx; InsertLinkList(L,i,x); LinkListLengh(L); PrintLinkList(L); couti; DeleteLinkList(L,i); LinkListLengh

7、(L); PrintLinkList(L); ClearLinkList(L); cout清空链表后:endl; LinkListLengh(L); PrintLinkList(L); DestroyLinkList(L);头文件h文件#include#includetypedef int ElemType; /规定元素类型为整struct LNode /定义单链表结构 ElemType data; LNode *next; /初始化单链表void InitList(LNode *& HL) HL=NULL; /将单链表置空void InsertRear(LNode *&HL,const El

8、emType & item) LNode *newptr;newptr=new LNode; /为保存新元素分配动态结点, newptr指向这个结点。if(newptr=NULL) /若未分配到结点,则停止插入,退出程序运行。 cerrMemory allocation failare!data=item; /把新元素赋给动态结点*newptr的值域 newptr-next=NULL; /给动态结点的指针域置空if(HL=NULL) HL=newptr; /向空表插入的结点为表头结点else LNode *p=HL;while(p-next!=NULL) /从表头开始遍历到最后一个结点为止 p

9、=p-next; p-next=newptr; /把新结点链接到表尾void TraverseList(LNode *&HL) LNode *p=HL; while(p!=NULL) coutdatanext; coutnext; return i;int Delete(LNode *&HL,const ElemType & item)if(HL=NULL) cerrHL is NULL!data=item) break;else /使前驱指针和当前指针均指向下一个结点ap=cp; cp=cp-next; if(cp=NULL) cerrDeleted element is not exist

10、!next;else /由cp指向被删除结点是非表头结点ap-next=cp-next; delete cp; return 1;Cpp文件#include#includetypedef int ElemType; /规定元素类型为整#include link.h /此文件中保存有线性表操作在单链表(由动态独立节点构成)上的实现void main() /构成单链表 LNode *head; InitList(head); int i,j; for(i=0;i50;i+) j=rand()%10; InsertRear(head,j); /输出遍历单链表 TraverseList(head);

11、/从单链表中删除与键盘上输入的值相等的所有结点 coutj; while(Delete(head,j) /输出遍历单链表 TraverseList(head); /输出单链表长度 coutListSize(head)endl;实验二 链表的应用飞机票销售系统(选做)一、实验目的1.掌握单链表的存储。2.掌握单链表的插入、删除、查找等操作的程序实现。3.加深对单链表基本概念,基本理论及相应算法的掌握与理解。二、实验内容编制一个简单的飞机票销售系统,它可以完成售票,退票,飞机票剩余情况查询等功能。每张飞机票包含机次,座位信息。在售票,退票,查询剩余票等环节中都会显示出飞机票的信息。三、实验步骤1.

12、为每张飞机票建立一个结点。2.利用插入功能插入一个结点(买票)。3.利用删除功能删除一个结点(卖票)。4.查找功能查找链表中的结点信息。四、程序运行测试1.利用插入功能插入一个结点(买票)。2.利用删除功能删除一个结点(卖票)。3.查找功能查找链表中的结点信息。五、实验报告要求1.绘制飞机票销售系统实现的流程图。2.详细给出程序运行测试结果(包括测试数据和测试结果)。3.选试验步骤2-4中的任意一个,给出程序的详细注释。4.参考程序中某一部分功能的改进(选做)5.实验心得与体会6.附录,实验用源程序六、参考源代码#include #include #include #define null 0

13、#define elemtype inttypedef struct node /*定义个结构*/ char num4; /*机次*/ elemtype seat; /*座位号*/ struct node *next;ticket;ticket *sale,*back; /*sale为售票链表指针,back为备份链表指针*/int count() /*查询飞机票剩余情况模块*/ ticket *q; int n=0; /*机票计数器*/ q=sale; while(q) /*统计机票数*/ n+; q=q-next; return(n);void abort_ticket(elemtype x

14、,char t) /*办理退票模块*/ ticket *s,*q; q=back; /*q指向备份链表*/ s=(ticket *)malloc(sizeof(ticket); /*需要办理退回的机票*/ s-seat=x; strcpy(s-num,t); while(strcmp(s-num,q-num)&(s-seat!=q-seat)&q) /*检查是否为有效票*/ q=q-next; if(!q) printf(对不起!你所退的不是本次飞机的车票!n); else /*为有效票办理退回业务*/ s-next=sale; sale=s; void sale_ticket() /*购票模

15、块*/ ticket *t; if(sale) t=sale; sale=sale-next; /*从销售链表中删除已售票所在的结点*/ printf(你购买飞机票的车次为:%s,座位号为:%dn,t-num,t-seat); free(t); else printf(飞机票已售完!n);void display() /*输出模块*/ ticket *p; p=sale; if(p=null) printf(飞机票已售完!);else while(p!=null) /*输出所有剩余机票的机次,座位情况*/ printf(%3d,%5s,p-seat,p-num); p=p-next; if(p

16、) printf(,); printf(n); void main() ticket *q,*p; char tl4; int d,i,n,select,flag=1; sale=null; /*销售链表指针初始化*/ back=null; /*备份链表指针初始化*/ printf(请输入飞机座位数:); scanf(%d,&n); for(i=1;inum); printf(请输入机票座位号:); scanf(%d,&d); q-seat=d; q-next=sale; sale=q; p-seat=d; p-next=back; back=p; printf(n); printf(飞机座位

17、情况为:n); display(); printf(n); while(flag) printf(1*查询剩票数n); printf(2*购票n); printf(3*退票n); printf(4*退出 n); printf(请选择您要执行的选项:); scanf(%d,&select); switch(select) case 1:d=count(); printf(n剩余的机票数为:%d,d); printf(n座位剩余情况为:); display(); printf(n); break; case 2: printf(n购买机票:n); sale_ticket(); printf(n);

18、 display(); printf(n); break; case 3: printf(n退票:); printf(请输入退票的机次:); scanf(%s,tl); printf(n请输入退票的座位号:); scanf(%d,&d); abort_ticket(d,tl); display(); printf(n); break; case 4:flag=0; break; 测试实例实验三 栈和队列的基本操作(必做)一、实验目的:1.掌握栈与队列的数据类型描述及特点;2.掌握栈和队列的存储;3.掌握栈的顺序和链式存储存表示与入栈、出栈操作的程序实现;4. 掌握队列的链式存储表示与入队、出队

19、基本操作算法实现二、实验内容1.根据栈数据结构,分别建立一个顺序栈和链式栈并实现其上基本操作(出栈和入栈等);2.根据队列数据结构,分别建立链队列和循环队列,并完成其上的基本操作(出入队列等)。三、实验步骤1.定义一个顺序栈和链栈结构体(队列结构体)。2.利用入栈功能保存数据。3.利用出栈删除弹出栈内信息。4.利用入队功能保存数据。5.利用出队删除队列信息。四、程序运行测试1.入栈功能测试。2.出栈功能测试。3.入队功能测试。4.出队功能测试。五、实验报告要求1.绘制程序实现的流程图。2.详细给出程序运行测试结果(包括测试数据和测试结果)。3.选试验步骤1、2中的任意一个,3、4中的任意一个给

20、出程序的详细注释。4.参考程序中某一部分功能的改进(选做)5.实验心得与体会6.附录,实验用源程序六、参考源程序顺序栈#include#define STACKSIZE 50typedef char DateType;typedef struct DateType sSTACKSIZE; int top;SeqStack;int i;DateType x;void InitSt(SeqStack* st) st-top=0; couttop=STACKSIZE) coutsst-top=x; st-top+;couttop; x=st-si-1; if(st-top=0) couttop-;

21、cout出栈成功!; cout出栈元素为:xtop; if(st-top=0) cout栈为空!; else i-; cout栈顶元素为:si; void showSt(SeqStack *st) if(st-top=0) cout栈为空!; else cout栈中元素为:n; for(i=0;itop;i+) coutsi; void main() int i,j; DateType x; SeqStack st; while(j) coutnnnn; cout*endl; cout* 菜单: *endl; cout*创建顺序栈 入栈 读栈顶元 *endl; cout*出栈 显示链栈元素 退

22、出 *endl; cout*endl; couti; if(i=1) InitSt(&st); else if(i=2) coutx; push(&st,x); else if(i=4) pop(&st); else if(i=3) readTop(&st); else if(i=5) showSt(&st); else if(i=6) j=0; cout程序结束!n; 链栈:#include #include #include typedef char DateType;typedef struct nodeDateType data;struct node* next;LinkStack;LinkStack *top;void InitStack() top=(LinkStack*)malloc(sizeof(LinkStack); top-next=NULL; top-data=0; coutdata=x; s-next=top; top=s; cout入栈成功!;void pop()

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

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