以下为《线性表实验报告》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
河 北 科 技 大 学
实 验 报 告
19级 专业 班学号 2021年 9 月 28 日
姓 名 教 师 郑某某
实验名称 单某某操作 成 绩
实验类型 设计型实验 批阅教师 郑某某
一、实验目的
掌握线性表的抽象数据类型描述。
掌握线性表的链式存储结构的特点,头结点的作用。
掌握单某某的C语言的类型描述形式。
重点掌握单某某的基本运算的实现,对插入和删除运算能进行性能分析。
掌握几个典型的复杂运算,如:归并、逆置、排序等。
二、实验内容
1.给出单某某的存储类型描述。
2.实现单某某的初始化、插入、删除等基本运算。
3.实现单某某的输入、输出运算(最好采用重载输入输出流方式)。
4.实现单某某的逆置、归并、排序等复杂运算。
5.编写主程序实现对这些运算的测试。
三、实验环境
硬 件:CPU I 5 内存4GB,硬盘512GB
操作系统:Windows XP
软件编程环境:VC++6.0
四、实验步骤
1.用VC建立一个控制台应用程序,命名为List。
2.新建一个头文件,命名为datastru.h,包含标示符常量的定义和Status类型定义。
3.新建一个头文件,命名为listlink.h,包含单某某的存储类型描述和基本运算的声明。
4.新建一个程序文件,命名为listlink.cpp,包含单某某基本运算的实现和复杂运算的实现。
5.新建一个主程序文件,命名为listlinkMain.cpp,包含对这些运算的测试。
五、程序源代码(对复杂的设计思想描述要有较详细的注释)
#include
#include
#include
#define MAXSIZE 100
#define ElemType int
#define Status int
//单某某的数据结构
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
//初始化
int InitList(LinkList &L)
{
L = (LNode *)malloc(sizeof(LNode));
L->next = NULL;
return 1;
}
//输出
void PrintList(LinkList L)
{
printf("当前单某某的所有元素:");
LNode *p;
p = L->next;
while (p != NULL)
{
printf("[%d] ", p->data);
p = p->next;
}
printf("\n");
}
//尾插法创建单某某
int Create(LinkList &L)
{
int n, e;
LNode *temp = L;//声明一个指针指 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。
{
printf("删除失败!!\n");
}
return 1;
}
//按值查找元素
int LocateElem(LNode *L, ElemType e)
{
int i = 1;
LNode *p = L->next;
while (p&&p->data != e) //从第一个结点开始,依次向后遍历比较
{
p = p->next;
i++;
}
if(p) return i;
else return 0;
}
int Search(LNode *L)
{
int flag; ElemType e;
printf("请输入要查找的值:");
scanf("%d", &e);
flag = LocateElem(L, e);
if (flag)
{
printf("该元素的位置为:%d\n", flag);
}
else
{
printf("未找到该元素!!\n");
}
return 1;
}
//功能菜单
void menu()
{
printf("|1.创建|----------|2.插入|\n");
printf("|3.删除|----------|4.查找|\n");
printf("|5.输出|----------|6.退出|\n");
}
int main()
{
LNode *L;
InitList(L);
int choice, len;
while (1)
{
menu();
printf("请输入菜单序号:");
scanf("%d", &choice);
if (6 == choice) break;
switch (choice)
{
case 1:Create(L); ; break;
case 2:Inster(L); break;
case 3:Delete(L); break;
case 4:Search(L); break;
case 5:PrintList(L); break;
default:printf("输入错误!!!\n");
}
}
}
七、结论体会
(说明实验过程中遇到的问题及解决办法;个人的收获;未解决的问题等)
坦白而谈,数据结构让我在不断学习数据结构的过程中不断强化对指针理解,使我明白如何正确有效的使用编程语言。
初步了解算法思想、原理 整明白抽象结构,想要弄清楚一个算法的实现,首先要大致知道这个算法的原理,这是最简单的一步,也是最基础的一步。
注重看懂弄懂会做书上的代码,毕竟那是最基础也是最重要的了解他们的目的,在此基础上深入的了解算法的实现过程,而不是在死记硬背,那样会事倍功半。
坚持上机操作,实践出真知 和所有计算机类的学习一样,数据结构是非常需要动手的一门课程,看书看一天也不如把书上的代码打到电脑上实践一遍,发现错误弄懂,那收获必定匪浅的
勤于练习,寻找感觉 算法是解决问题的方法,掌握树上的只是以后,要去找一些具有综合性的题目来做一做,这些问题里面包含了各种知识点,例如同时蕴含了排序,堆栈的相关知识,只有在解决这类问题的时候,才能知道如何去灵活准确的运用各种算法,才能检验我们是否扎实了课本上的知识。
[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《线性表实验报告》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。