




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
_实验一、线性表的实现及操作(一)一、实验目的了解和掌握线性表的顺序存储结构;掌握用C语言上机调试线性表的基本方法;掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结构上的运算,以及对相应算法的性能分析。二、实验要求给定一段程序代码,程序代码所完成的功能为:(1)建立一个线性表;(2)依次输入数据元素1,2,3,4,5,6,7,8,9,10;(3)删除数据元素5;(4)依次显示当前线性表中的数据元素。假设该线性表的数据元素个数在最坏情况下不会超过100个,要求使用顺序表。程序中有3处错误的地方,有标识,属于逻辑错误,对照书中的代码仔细分析后,要求同学们修改错误的代码,修改后上机调试得到正确的运行结果。(1)需求分析: 这份实验报告为所有必做题的实验报告。包括实验一顺序表建立、插入、删除等基本操作,实验二单链表的建立、插入、删除等基本操作,实验四二叉树的基本操作:树的建立、前序、中序、后序遍历及实验六图的遍历:深度优先和广度优先。这四份基础性的实验为改错性质,将每个实验题目中的错误改正过来并通过调试,有助于对基础知识的理解与强化记忆。(2)概要设计: 实验一为对顺序线性表实现插入,删除,查找等基本操作。 需要用到的语句包括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)等。 实验二是对单链表进行建立,插入,删除等基本操作。 需要的语句为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)等。 实验四为二叉树,要求建立一个二叉树,并实现前序,中序及后序的遍历。 所需语句包括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 100typedef int DataType;typedef structDataType 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;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中*/*删除成功返回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 *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( myList, i, &x); /此段程序有一处错误printf(%d , x); 测试结果:线性表的实现及操作(二)一、实验目的了解和掌握线性表的链式存储结构;掌握用C语言上机调试线性表的基本方法;掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结构上的运算,以及对相应算法的性能分析。二、实验要求给定一段程序代码,程序代码所完成的功能为:(1)建立一个线性表;(2)依次输入数据元素1,2,3,4,5,6,7,8,9,10;(3)删除数据元素5;(4)依次显示当前线性表中的数据元素。假设该线性表的数据元素个数在最坏情况下不会超过100个,要求使用单链表。程序中有3处错误的地方,有标识,属于逻辑错误,对照书中的代码仔细分析后,要求同学们修改错误的代码,上机调试并得到正确的运行结果。三、程序代码:(更正后的结果)#include /*该文件包含pringtf()等函数*/#include /*该文件包含exit()等函数*/#include /*该文件包含malloc()等函数*/typedef int DataType;/*定义DataType为int*/typedef struct NodeDataType data;struct Node *next; SLNode;void ListInitiate(SLNode *head)/*初始化*/*如果有内存空间,申请头结点空间并使头指针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(SLNode *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-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 & 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和删除函数类同,只是不删除数据元素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 i , x;ListInitiate(&head);/*初始化*/for(i = 0; i 10; i+)if(ListInsert(head, i, i+1) = 0) /*插入10个数据元素*/printf(错误! n);return;if(ListD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年跨境知识产权授权合同版
- 二零二五年度爆破拆除工程安全生产责任书及合同
- 护工基础知识培训内容课件
- 二零二五年度跨境贸易融资合同规范
- 2025版空调租赁及租赁期限延长合同范本
- 二零二五年跑步俱乐部年度财务审计协议范本
- 护士院感消毒隔离课件
- 圆形庭院设计施工方案图
- 混凝土内加钢梁施工方案
- Linux网络操作系统任务教程(第2版)习题及答案汇 习题6-10 颜晨阳
- 完形填空20篇(15空)-牛津译林版七年级英语下学期期末高频易错点专练(带详解)
- 《新媒体营销与运营实战(微课版)》-教学大纲
- 耳鼻喉科规培汇报
- 2025年云南省康旅控股集团有限公司招聘考试笔试试题(含答案)
- 投标项目设备培训方案(3篇)
- 2025年郑州转业士官考试题库
- 一级建造师《公路工程》备考试题及答案
- 2025年公务员考试时事政治试题【含答案详解】
- 劳动合同瑜伽馆(2025版)
- 压力开关校准培训课件
- 工会内控管理办法
评论
0/150
提交评论