参考文档《软件技术基础》实验报告 1000字精选word文档 16页文档格式.docx
- 文档编号:17111023
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:14
- 大小:19.45KB
参考文档《软件技术基础》实验报告 1000字精选word文档 16页文档格式.docx
《参考文档《软件技术基础》实验报告 1000字精选word文档 16页文档格式.docx》由会员分享,可在线阅读,更多相关《参考文档《软件技术基础》实验报告 1000字精选word文档 16页文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
书上的例程是含有两个元素的,改为一个元素的时候花了一些时间。
参考了书本,对书上的函数有了比较深刻的理解。
附:
部分源程序
#include<
iostream.h>
constintmaxsize=100;
structstu
{
intid;
charname[20];
};
structSeqList
studata[maxsize];
intlength;
//主函数
intmain()
SeqListL;
L.length=0;
stus;
cout<
<
"
请输入三个学生的学号、姓名:
\n"
;
}for(inti=0;
i<
3;
i++){cin>
>
s.id>
s.name;
Insert(&
L,s);
}cout<
endl;
Display(&
L);
intID;
cout<
请输入要删除的学生的学号"
cin>
ID;
Delete(&
L,ID);
return0;
实验二链表的操作
(一)
1、掌握单链表结构的实现方式;
2、掌握单链表常用算法的实现。
1、设计一个链表,要求编程实现如下任务:
(1)建立一个链表,首先依次输人整数数据元素(个数根据需要键盘给定)。
(2)删除指定值的结点(指定值通过键盘输入),再依次显示删除后的链表中的数据元素。
(3)查找指定值的结点(指定数据由键盘输入),若找到则显示查找成功,若没有找到则显示查找失败。
(4)在第i个节点(i由键盘输入,i=0表示插入的结点作为第1个结点)之后插入一个元素为x的节点。
没太大问题,最大的问题就是不熟悉。
五、实验心得体会:
根据书上的例程,遇到的问题还是与第一次实验差不多,把一个数组元素改为整数元素,很多地方都要改,做不到完全自己写出来。
这次实验让我的对链表这种数据结构有了更深的了解,也对指针有了更加广泛的应用,对指针有了更的了解。
structIntList
intdata;
IntList*next;
//初始化函数
voidInit(IntList*head,intx)
IntList*p=head;
IntList*s=newIntList;
while(p->
next!
=NULL)
p=p->
next;
s->
data=x;
next=p->
p->
next=s;
}
voidmain()
IntList*head;
head=newIntList;
head->
next=NULL;
intsel=1,x,n;
请输入要录入的个数\n"
cin>
n;
请输入数据\n"
for(inti=0;
i<
n;
i++)
x;
Init(head,x);
输入的数据为:
Display(head);
while(sel!
=0)
选择要进行的操作:
1、插入
sel;
switch(sel)
{2、删除3、查找0、退出\n"
}case1:
{intw;
请输入要插入的元素和位置\n"
x>
w;
get_in(head,x,w);
break;
}case2:
{cout<
请输入要删除的元素\n"
Delete(head,x);
结果为:
Display(head);
}case3:
请输入要查找的元素\n"
Search(head,x);
}case0:
}
实验三链表的操作
(二)
1、熟悉利用线性链表解决问题的一般思路;
2、参照给定的链表的程序样例,验证给出的链表的常见算法,了解单链表结构的优点和不足。
1、使用链表实现一个电话本的管理程序,电话本中的每条记录包括姓名和电话两项。
链表初始化时所输入数据一直添加到头结点的下一个节点,不能按照输入的顺序建立链表。
解决办法:
在有数据添加到链表时,用一个while语句判断头结点指向的第一个节点是否为空,若为空,则直接添加,若不为空,则向后寻找,直到节点的指针的指向为空。
然后添加数据,将新的地址赋值后指向为空的指针。
在对链表进行操作时,一定要注意所定义的指针的位置,不然很容易产生错误操作。
在插入数据时一定要注意链表的长度。
若插入的位置大于链表的长度则会发生错误。
实验四栈的操作
掌握栈的的定义和运算,了解栈的应用。
1、堆栈的测试和应用。
要求:
设计一个主函数实现对顺序堆栈代码进行测试。
测试方法为:
依次把数据元素1,3,5,7,9入栈,然后出栈堆栈中的数据元素并在屏幕上显示。
第一次把程序用类的方式来写,对类不熟悉,一开始写的很繁琐,后请教老师并修改后可运行。
通过这次实验,学会了用类的方式写程序。
而且明白了,用类写程序不是让生搬硬套,而是要运用类把程序的形式化到最简。
structSqStack
char*data;
inttop;
intstacksize;
//栈的初始化
voidInitStack(SqStack&
s,intsize)
if(size>
0)
s.stacksize=size;
s.top=-1;
s.data=newchar[size];
elsecout<
栈的初始化长度失败"
SqStackT;
intnumber[10],i,n;
InitStack(T,10);
需要输入的数据的个数为:
for(i=0;
i++)
number[i];
Push(T,number[i]);
"
输出结果\n"
for(i=0;
i<
n;
Pop(T,number[i]);
number[i]<
\t"
实验五队列的操作
班级XXXXX学号XXXXXXX姓名XXXX第X周星期X、XXX节成绩
掌握队列的定义及其运算,了解队列的应用。
1、队列测试和应用。
设计一个主函数对循环队列代码进行测试。
依次把数据元素2,4,6,8,10入队,然后出队中的数据元素并在屏幕上显示。
删除最后一个元素后,在进行入队出队后发生错误。
解决方法:
在删除最后一个元素后,修改尾指针。
将头指针的值赋给尾指针。
队列是操作受限的线性表,其基本运算方法与顺序表和链表运算方法基本相同,在应用队列的数据结构时,应定要注意队列的先进先出这一特点。
constintMAX=100;
classSqQueue
public:
intdata[MAX];
intfront;
intrear;
//入队列
voidEnQueue(intx)
if((rear+1)%MAX==front)cout<
队列已满"
else{
rear=(rear+1)%MAX;
data[rear]=x;
SqQueueQ[1];
Q[0].front=Q[0].rear=0;
intt[5];
inti;
5;
请输入5个整数:
t[i];
{Q[0].EnQueue(t[i]);
Q[0].DeQueue(Q[0])<
return0;
实验六二叉树的生成和遍历
1、熟悉二叉树节点的定义和生成方式;
2、熟悉二叉树链式结构的生成方式;
3、掌握二叉树遍历算法的实现。
三、实验内容:
1.设计实现二叉树的建立及遍历算法,要求:
(1)编写创建二叉链式存储结构的二叉树程序并输出。
(2)编写递归实现二叉树的先序、中序、后序遍历算法。
(3)编写主函数测试以上二叉树的创建和遍历函数。
2.假设二叉树采用链式存储结构进行存储,编写程序实现二叉树的所有叶子结点的统
计并输出统计个数。
在编二叉树时,刚开始没有设置0作为创建二叉树的结束,造成了所创建的二叉树始终不能结束。
最后把0做为结束标志,解决了这个问题。
通过这次实验,我知道了在编写二叉树是要设置一个数0表示创建输的完成,以及在进行遍历的是要从左边遍历,然后再是右边。
要注意保存结点指针,这样可以访问上一个数据,位访问右边的数据提供了方便。
实验七实现查找算法
掌握各种查找算法的特点,测试并验证查找常见算法。
1.建立有序表,采用折半查找实现某一已知的关键字的查找。
2.利用折半查找算法在一个有序表中插入一个元素,并保持表的有序性。
一开始先写好了二分查找的程序,在这个基础上一直写不出来在有序表中插入一个元素,并保持表的有序性,后来通过请教同学,才恍然大悟,应该先写插入的程序,再将查找改成二分法。
通过这次实验,我知道了,在编写折半查找时在设置查找区间初值时,要把下边界low=0,上边界high=length-1。
structList
intdata[20],length;
voidInsert_1(List*L,intx)//顺序表的初始化函数
intj=L->
length-1;
L->
data[j+1]=x;
length++;
voidmain()//主程序
ListL;
//定义一个顺序表L.length=0;
intsel=1,x;
//sel为循环标志数cout<
请输入10个数据\n"
for(inti=0;
i<
10;
i++){cin>
Insert_1(&
L,x);
paixu(&
排序后的数据\n"
Display(&
while(sel!
=0)
请选择要进行的操作:
1、查找数据"
2、插入数据"
0、退出\n"
switch(sel){case1:
输入要查找的数据\n"
要查找的数据在第"
Search(&
L,x)<
位\n"
输入要插入的数据\n"
if(Search(&
L,x)!
=0){for(i=L.length-1;
i>
Search(&
L,x)-1;
i--)L.data[i+1]=L.data[i];
L.data[i+1]=x;
L.length++;
else
for(i=L.length-1;
L.data[i]>
=x;
i--)
L.data[i+1]=L.data[i];
L.data[i+1]=x;
L.length++;
插入后的数据\n"
}}}Display(&
L);
实验八排序综合实验
班级号姓名
参照各种排序算法程序样例,验证给出的排序常见算法。
输入一组关键字序列分别实现下列排序,并将上述几种排序的算法编写成菜单,根据输入的数字不同执行对应的排序算法(任选两种排序方法实现)。
1、直接插入排序。
2、希尔排序。
3、冒泡排序。
4、直接选择排序。
5、快速排序。
6、堆排序。
7、归并排序。
8、基数排序。
没有什么问题,就是快速排序写不来。
因为是任选两种,所以没有继续。
排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。
在具体操作中对这学期所学的数据结构和以前学的C语言的理论知识得到巩固,也发现自己的不足之处,在以后的上机中应更加注意,通过实际操作,学会数据结构书中程序的编写方法和基本步骤,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。
附:
部分源程序
{inti,n,select;
intv[maxsize];
请输入数据长度:
请输入数据:
v[i];
while(select!
=0)
{cout<
请输入操作选择:
1-直接插入排序2-冒泡排序3-选择排序0-结束\n"
select;
switch(select)
{case1:
直接插入排序\n"
InsertSort(v,n);
v[i]<
break;
case2:
冒泡排序\n"
Bub(v,n);
case3:
选择排序\n"
SS(v,n);
case0:
使用结束"
∙荐计算机上机实验内容及实验报告要求
∙荐构建学校德育管理与评价体系的实验报告
∙荐化学实验报告格式
∙荐大学物理实验课程设计实验报告
∙荐电路实验报告要求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件技术基础 参考文档软件技术基础实验报告 1000字精选word文档 16页 参考 文档 软件技术 基础 实验 报告 1000 精选 word 16