版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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
3、*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, D
4、ataType *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 <stdio.h>#define MaxSi
5、ze 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,插入失
6、败返回0*/int j;if(L->size >= MaxSize)printf("顺序表已满无法插入! n");return 0;else if(i < 0 | 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 ListDele
7、te(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 < 0 | i > L->size-1)printf("参数i不合法");return 0;else/此段程序有一处错误*x = L->listi;/*保存删除的元素到参数x中*/for(j = i +
8、1; j <= L->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 < 0 | i > L.size-1)printf("参数i不合法! n");return 0;else*x = L.listi;return 1;void main(void) SeqList myLis
9、t; 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语言上机调试线性表的基本
10、方法;掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结构上的运算,以及对相应算法的性能分析。二、实验要求给定一段程序代码,程序代码所完成的功能为:(1)建立一个线性表;(2)依次输入数据元素1,2,3,4,5,6,7,8,9,10;(3)删除数据元素5;(4)依次显示当前线性表中的数据元素。假设该线性表的数据元素个数在最坏情况下不会超过100个,要求使用单链表。程序中有3处错误的地方,有标识,属于逻辑错误,对照书中的代码仔细分析后,要求同学们修改错误的代码,上机调试并得到正确的运行结果。三、程序代码:(更正后的结果)#include <stdio.h&
11、gt;/*该文件包含pringtf()等函数*/#include <stdlib.h>/*该文件包含exit()等函数*/#include <malloc.h>/*该文件包含malloc()等函数*/typedef int DataType;/*定义DataType为int*/typedef struct NodeDataType data;struct Node *next; SLNode;void ListInitiate(SLNode *head)/*初始化*/*如果有内存空间,申请头结点空间并使头指针head指向头结点*/if(*head = (SLNode *
12、)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 s
13、ize)结点前*/*插入一个存放数据元素x的结点*/SLNode *p, *q;int j;p = head; /*p指向首元结点*/j = -1;/*j初始为-1*/while(p->next != NULL && j < i - 1) /*最终让指针p指向数据元素ai-1结点*/p = p->next;j+;if(j != i - 1)printf("插入位置参数错!");return 0;/*生成新结点由指针q指示*/if(q = (SLNode *)malloc(sizeof(SLNode) = NULL) exit(1);q-&g
14、t;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->
15、;next != NULL && p->next->next!= NULL && j < i - 1) /*最终让指针p指向数据元素ai-1结点*/p = p->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(
16、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 < i)p = p->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;i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 事业单位财会岗面试2026面试易错题专项考题专业面试试卷及答案
- 商场紧急疏散预案与演练指南
- 事业单位综合岗面试2026经典考题必练考题试卷及答案
- 丰田车间介绍课件
- 事业单位计算机岗面试结构化问答易错题试卷及解析
- 工业企业绿色生产流程指导书
- 体育场馆门禁系统维护规范
- 技术部新软件系统压力测试通过确认函7篇
- 运营司机绩效考核指标表
- 制造企业智能工厂升级手册
- 国核电力规划设计研究院有限公司招聘4人笔试历年难易错考点试卷带答案解析
- 《电子竞技场馆运营服务规范》
- 无人机行业应用典型项目教程
- 2025~2026学年上海市杨浦区上学期六年级数学期中考试
- GB/T 21496-2025动植物油脂油脂沉淀物含量的测定离心法
- 辽宁省点石联考2025-2026学年高二(上)月考物理试卷(12月)(含答案)
- 保险消费者权益保护培训
- 穿越机基础课件
- SNCR脱硝系统知识培训课件
- 绒用山羊饲养管理技术
- 2025年广州铁路局校园招聘机考真题
评论
0/150
提交评论