数据结构实验报告实验一.doc

上传人:rrsccc 文档编号:8976611 上传时间:2021-01-28 格式:DOC 页数:10 大小:277.50KB
返回 下载 相关 举报
数据结构实验报告实验一.doc_第1页
第1页 / 共10页
数据结构实验报告实验一.doc_第2页
第2页 / 共10页
数据结构实验报告实验一.doc_第3页
第3页 / 共10页
数据结构实验报告实验一.doc_第4页
第4页 / 共10页
数据结构实验报告实验一.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《数据结构实验报告实验一.doc》由会员分享,可在线阅读,更多相关《数据结构实验报告实验一.doc(10页珍藏版)》请在三一文库上搜索。

1、 数据结构实验报告1.实验序号 实验名称 实验一 创建单链表和单链表操作2.班级、姓名、学号、实验日期 3.实验目的掌握线性表的基本操作:插入、删除、查找、以及线性表合并等操作在顺序存储结构和链式存储结构上的实现。测试数据为(3,9,5,6,11,8);在5之前插入4,7,并删除11 求集合1,12,8,6,4,9和2,5,12,7,4的并集4. 概要设计 为了条理清晰,分为2个程序分别实现插入删除功能和求并集功能 (1)创建链表:分配空间,根据链表长度输入值创建链表 修改插入位置结点的前后指针,将给定的值插入到指定的位置或者将指定位置的值删除 (2)创建两个链表,修改链表头尾指针,将两个链表

2、合并5. 详细设计实现插入删除功能#include#include#include#include#define OK 1#define OVERFLOW 0typedef struct LNodeint data; / 数据域struct LNode *next; / 指针域LNode,*LinkList; /结点结构类型和指向结点的指针类型int TraverseList_L(LinkList L) /遍历单链表 LinkList p; p=L-next; while(p) printf(-%d,p-data); p=p-next; return OK;void CreateList_L(

3、LinkList &L,int &n)L=(LinkList)malloc(sizeof (LNode);/建立一个空链表L。 if(!L) exit(OVERFLOW); else L-next=NULL; int i=0; LinkList p,q; printf(请输入要在该链表存放的值); q=L;for(i=0;idata); p-next=q-next; q-next=p; q=p;/在第i个元素插入一个元素。LinkList ListInsert_L(LinkList &L,int i,int e)LNode *p,*s;int j; printf(输入要插入的结点位置:);sc

4、anf(%d,&i);p=L;j=0;while(p&jnext;+j;if(!p|ji-1)printf(您插入的位置不合法,不合法);return 0;/判断i的值是否合法s=(LinkList)malloc(sizeof(LNode); if(!s) exit(OVERFLOW);printf(输入要在该结点存放的数值 :); scanf(%d,&e);s-data=e;s-next=p-next;p-next=s;return(L);/删除结点LinkList ListDelete_L(LinkList &L,int i,int e)LNode *p,*q;p=L;int j=0;pr

5、intf(输入要删除的结点的位置:);scanf(%d,&i);while(p-next & jnext;+j;if(!(p-next)|ji-1)printf(您删除的位置不合法,不合法); return 0;q=p-next;p-next=q-next;e=q-data;int main() int n,i,e,m,j; LinkList L,LA; LNode *MergeList;printf(输入要定义的LA链表长度:);/输入链表LA值。 scanf(%d,&n); CreateList_L(LA, n); printf(LA链表输出为:); TraverseList_L(LA);

6、 printf(n);system(CLS);/clear screenprintf(LA链表输出为:); TraverseList_L(LA); printf(n);sub: printf( *);printf(n); printf( *按数字1.插入结点* );printf(n);printf( *按数字2.删除结点* );printf(n);printf( *按其它任意键退出* );printf(n);printf( *);printf(n);printf(请选择数字进行操作:); scanf(%d,&m);printf(n); switch(m)case 1: ListInsert_L

7、(LA,i,e);/插入结点。 printf(插入后的链表为:); TraverseList_L(LA); printf(nnn); goto sub;case 2: ListDelete_L(LA,i,e); /删除结点。 printf(删除后的链表为:); TraverseList_L(LA); printf(nnn); goto sub;default: break;return 0;实现集合的合并功能#include#include#include#include#define OK 1#define OVERFLOW 0/线性链表的存储结构,一个结点typedef struct LN

8、odeint data; / 数据域struct LNode *next; / 指针域LNode,*LinkList; /结点结构类型?和指向结点的指针类型int TraverseList_L(LinkList L) /遍历单链表 LinkList p; p=L-next; while(p) printf(-%d,p-data); p=p-next; /end of while return OK;/*int TraverseList_L2(LinkList L) /遍历单链表int m6; LinkList p; p=L-next; while(p) printf(-%d,p-data);

9、p=p-next; /end of while return OK;*/void CreateList_L(LinkList &L,int &n)L=(LinkList)malloc(sizeof (LNode);/建立一个空链表L。 if(!L) exit(OVERFLOW); else L-next=NULL; int i=0; LinkList p,q; printf(输入要在该链表存放的值); q=L;for(i=0;idata); p-next=q-next; q-next=p; q=p;LinkList MergeList_L(LinkList &LA,LinkList &LB)/

10、合并LA和LB链表为LC。 LNode *p,*q;p=LA;while(p-next!=NULL) p=p-next;/p指向尾结点q=LB-next;p-next=q;free(LB);return(LA); /主函数。int main() int n; LinkList LA,LB;LNode *MergeList;printf(输入要定义的LA链表长度:);/输入链表LA值。 scanf(%d,&n); CreateList_L(LA, n); printf(LA链表输出为:); TraverseList_L(LA); printf(n);printf(输入要定义的LB链表长度:);/

11、输入链表LB的值。 scanf(%d,&n); CreateList_L(LB, n); printf(LB链表输出为:); TraverseList_L(LB); printf(n);system(CLS);printf(LA链表输出为:); TraverseList_L(LA); printf(n);printf(LB链表输出为:); TraverseList_L(LB); printf(n);printf(LA和LB合并后LC链表输出为:);/输出LC MergeList_L(LA,LB);TraverseList_L(LA); printf(n); return 0;6. 调试分析 经

12、过一些数据的分析测试,可以达到预定的目的 第一个程序中通过对不合法的操作的测试及其他各种数据的测试可以达到预期的目的 第二个程序过对不合法的操作的测试及其他各种数据的测试可以达到预期的目的。它的主要缺点就是当两个集合中有相同元素时合并后的集合这个元素会显示两次7.测试结果 创建单链表,在单链表上进行插入、删除操作 设计一个程序,用两个单链表分别表示两个集合,并求出这两个集合的并集 8. 实验心得 数据结构是一门专业技术基础课。它要求学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构,存储结构及相应的算法,并初步掌握算法的时间分析和空间分析技术。不仅要考虑具体实现哪些功能,同时还要考虑如何布局,这次的实验题目是根据我们的课本学习进程出的,说实话,我并没有真正的读懂书本的知识,所以刚开始的时候,感到很棘手,于是又重新细读课本,这一方面又加强了对书本的理解,在这上面花费了一些心血,觉得它并不简单,是需要花大量的时间来编写的。现在明白了一些代码的真正应用,每个程序都有一些共同点,通用的结构,相似的格式。在本次实验中,在程序构思及设计方面有了较大的锻炼,能力得到了一定的提高。

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1