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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

线性表的实现及操作二.docx

1、线性表的实现及操作二实验一、线性表的实现及操作(一)一、实验目的了解和掌握线性表的顺序存储结构;掌握用C语言上机调试线性表的基本方法;掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结构上的运算,以及对相应算法的性能分析。二、实验要求给定一段程序代码,程序代码所完成的功能为:(1)建立一个线性表;(2)依次输入数据元素1,2,3,4,5,6,7,8,9,10;(3)删除数据元素5;(4)依次显示当前线性表中的数据元素。假设该线性表的数据元素个数在最坏情况下不会超过100个,要求使用顺序表。程序中有3处错误的地方,有标识,属于逻辑错误,对照书中的代码仔细分析后,

2、要求同学们修改错误的代码,修改后上机调试得到正确的运行结果。(1)需求分析: 这份实验报告为所有必做题的实验报告。包括实验一顺序表建立、插入、删除等基本操作,实验二单链表的建立、插入、删除等基本操作,实验四二叉树的基本操作:树的建立、前序、中序、后序遍历及实验六图的遍历:深度优先和广度优先。这四份基础性的实验为改错性质,将每个实验题目中的错误改正过来并通过调试,有助于对基础知识的理解与强化记忆。(2)概要设计: 实验一为对顺序线性表实现插入,删除,查找等基本操作。 需要用到的语句包括void ListInitiate(SeqList *L) int ListInsert(SeqList *L,

3、 int i, DataType x) int ListDelete(SeqList *L, int i, DataType *x) int ListGet(SeqList L, int i, DataType *x)等。 实验二是对单链表进行建立,插入,删除等基本操作。 需要的语句为void ListInitiate(SeqList *L) int ListInsert(SeqList *L, int i, DataType x) int ListDelete(SeqList *L, int i, DataType *x) int ListGet(SeqList L, int i, Data

4、Type *x)等。 实验四为二叉树,要求建立一个二叉树,并实现前序,中序及后序的遍历。 所需语句包括void ListInitiate(SeqList *L) int ListInsert(SeqList *L, int i, DataType x) int ListDelete(SeqList *L, int i, DataType *x) int ListGet(SeqList L, int i, DataType *x)等。 实验六的内容是图的遍历包括邻接矩阵和邻接链表两种方法。三、程序代码(更正后的代码)#include #define MaxSize 100 typedef int

5、 DataType;typedef struct DataType listMaxSize; int size; SeqList;void ListInitiate(SeqList *L) /*初始化顺序表L*/ L-size = 0; /*定义初始数据元素个数*/ int ListLength(SeqList L) /*返回顺序表L的当前数据元素个数*/ return L.size;int ListInsert(SeqList *L, int i, DataType x) /*在顺序表L的位置i(0 i size)前插入数据元素值x*/ /*插入成功返回1,插入失败返回0*/ int j;

6、if(L-size = MaxSize) printf(顺序表已满无法插入! n); return 0; else if(i L-size ) printf(参数i不合法! n); return 0; else for(j = L-size; j i; j-) L-listj = L-listj; /*为插入做准备*/ L-listi = x; /*插入*/ L-size +; /*元素个数加1*/ return 1; int ListDelete(SeqList *L, int i, DataType *x) /*删除顺序表L中位置i(0 i size - 1)的数据元素值并存放到参数x中*

7、/*删除成功返回1,删除失败返回0*/ int j; if(L-size = 0) printf(顺序表已空无数据元素可删! n); return 0; else if(i L-size-1) printf(参数i不合法); return 0; else /此段程序有一处错误 *x = L-listi; /*保存删除的元素到参数x中*/ for(j = i +1; j size-1; j+) L-listj = L-listj-1; /*依次前移*/ L-size-; /*数据元素个数减1*/ return 1; int ListGet(SeqList L, int i, DataType *

8、x)/*取顺序表L中第i个数据元素的值存于x中,成功则返回1,失败返回0*/ if(i L.size-1) printf(参数i不合法! n); return 0; else *x = L.listi; return 1; void main(void) SeqList myList; int i , x; ListInitiate(&myList); for(i = 0; i 10; i+) ListInsert(&myList, i, i+1); ListDelete(&myList, 4, &x); for(i = 0; i ListLength(myList); i+) ListGet

9、( myList, i, &x); /此段程序有一处错误 printf(%d , x); 测试结果:线性表的实现及操作(二)一、实验目的了解和掌握线性表的链式存储结构;掌握用C语言上机调试线性表的基本方法;掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结构上的运算,以及对相应算法的性能分析。二、实验要求给定一段程序代码,程序代码所完成的功能为:(1)建立一个线性表;(2)依次输入数据元素1,2,3,4,5,6,7,8,9,10;(3)删除数据元素5;(4)依次显示当前线性表中的数据元素。假设该线性表的数据元素个数在最坏情况下不会超过100个,要求使用单链表。

10、程序中有3处错误的地方,有标识,属于逻辑错误,对照书中的代码仔细分析后,要求同学们修改错误的代码,上机调试并得到正确的运行结果。三、程序代码:(更正后的结果)#include /*该文件包含pringtf()等函数*/#include /*该文件包含exit()等函数*/#include /*该文件包含malloc()等函数*/typedef int DataType; /*定义DataType为int*/typedef struct Node DataType data; struct Node *next; SLNode;void ListInitiate(SLNode *head) /*

11、初始化*/ /*如果有内存空间,申请头结点空间并使头指针head指向头结点*/ if(*head = (SLNode *)malloc(sizeof(SLNode) = NULL) exit(1); (*head)-next = NULL; /*置链尾标记NULL */int ListLength(SLNode *head) SLNode *p = head; /*p指向首元结点*/ int size = 0; /*size初始为0*/ while(p-next != NULL) /*循环计数*/ p = p-next; size +; return size;int ListInsert(S

12、LNode *head, int i, DataType x)/*在带头结点的单链表head的数据元素ai(0 i size)结点前*/*插入一个存放数据元素x的结点*/ SLNode *p, *q; int j; p = head; /*p指向首元结点*/ j = -1; /*j初始为-1*/ while(p-next != NULL & j next; j+; if(j != i - 1) printf(插入位置参数错!); return 0; /*生成新结点由指针q指示*/ if(q = (SLNode *)malloc(sizeof(SLNode) = NULL) exit(1); q

13、-data = x;/此段程序有一处错误 p-next = q-next; /*给指针q-next赋值*/ p-next = q; /*给指针p-next重新赋值*/ return 1;int ListDelete(SLNode *head, int i, DataType *x)/*删除带头结点的单链表head的数据元素ai(0 i size - 1)结点*/*删除结点的数据元素域值由x带回。删除成功时返回1;失败返回0*/ SLNode *p, *s; int j; p = head; /*p指向首元结点*/ j = -1; /*j初始为-1*/ while(p-next != NULL

14、& p-next-next!= NULL & j next; j+; if(j != i - 1) printf(插入位置参数错!); return 0; /此段程序有一处错误 s = p-next; /*指针s指向数据元素ai结点*/ *x = s-data; /*把指针s所指结点的数据元素域值赋予x*/ p-next = s-next; /*把数据元素ai结点从单链表中删除指*/ free(s); /*释放指针s所指结点的内存空间*/ return 1;int ListGet(SLNode *head, int i, DataType *x)/*取数据元素ai和删除函数类同,只是不删除数据

15、元素ai结点*/ SLNode *p; int j; p = head; j = -1; while(p-next != NULL & j next; j+; if(j != i) printf(取元素位置参数错!); return 0; /此段程序有一处错误 *x = p-data; return 1;void Destroy(SLNode *head) SLNode *p, *p1; p = *head; while(p != NULL) p1 = p; p = p-next; free(p1); *head = NULL;void main(void) SLNode *head; int

16、 i , x; ListInitiate(&head); /*初始化*/ for(i = 0; i 10; i+) if(ListInsert(head, i, i+1) = 0) /*插入10个数据元素*/ printf(错误! n); return; if(ListDelete(head, 4, &x) = 0) /*删除数据元素5*/ printf(错误! n); return; for(i = 0; i ListLength(head); i+) if(ListGet(head, i, &x) = 0) /*取元素*/ printf(错误! n); return; else printf(%d , x); /*显示数据元素*/ Destroy(&head);测试结果为:

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

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