数据结构Word下载.docx
- 文档编号:18257650
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:9
- 大小:22.92KB
数据结构Word下载.docx
《数据结构Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
2.建立工程:
点File->
New,选Project标签,在列表中选Win32ConsoleApplication,再在右边的框里为工程起好名字,选好路径,点OK->
finish。
至此工程建立完毕。
3.创建源文件或头文件:
New,选File标签,在列表里选C++SourceFile。
给文件起好名字,选好路径,点OK。
至此一个源文件就被添加到了你刚创建的工程之中。
4.写好代码
5.编译->链接->调试
【实验心得】
线性是我们学习数据结构中,碰到的第一个数据结构。
学习线性表的重点掌握顺序表和单链表的各种算法和时间性能分析。
线性表右两种存储方式即顺序存储结构和链式存储结构。
通过学习我知道了对线性表进行建立、插入、删除,同时单链表也是进行建立、插入、删除。
而对于顺序表的插入删除运算,其平均时间复杂度均为0(n).通过这次的学习,掌握的太熟练,主要是课本上的知识点没有彻底的理解,回去我会多看书,理解重要的概念。
总之,这次实验我找到了自己的不足之处,以后会努力的。
实验二:
栈的表示与实现及栈的应用
(1)掌握栈的顺序存储结构及其基本操作的实现。
(2)掌握栈后进先出的特点,并利用其特性在解决实际问题中的应用。
(3)掌握用递归算法来解决一些问题。
1.编写程序,对于输入的任意一个非负十进制整数,输出与其等值的八进制数。
2.编写递归程序,实现N!
的求解。
3.编写递归程序,实现以下函数的求解。
4.编写程序,实现Hanoi塔问题。
通过这次的学习我掌握了栈这种抽象数据类型的特点,并能在相应的应用任务中正确选用它;
总的来说,栈是操作受限的线性表,是限定仅在表尾进行插入或删除操作的线性表。
因此,对栈来说,表尾端有其特殊含义,称为栈顶(top),相应地,表头端称为栈底(botton);
栈又称为后进先出(LastInFirstOut)的线性表,简称LIFO结构,因为它的修改是按后进先出的原则进行的。
加上这个实验,我已经学了线性表(顺序表,单链表)和栈,知道它们都是线性表,而且对以后的学习有很大的作用,可以说这是学习以后知识的总要基础。
实验三:
二叉树的建立及遍历
(1)掌握利用先序序列建立二叉树的二叉链表的过程。
(2)掌握二叉树的先序、中序和后序遍历算法。
1.编写程序,实现二叉树的建立,并实现先序、中序和后序遍历。
如:
输入先序序列abc###de###,则建立如下图所示的二叉树。
并显示其先序序列为:
abcde
中序序列为:
cbaed
后序序列为:
cbeda
这次试验是关于二叉树的常见操作,主要是二叉树的建立和遍历,在这次实验中我按先序方式建立二叉树的,而遍历方式则相对要多一些,有递归的先序、中序、后序遍历,和非递归的先序、中序、后序遍历,此外还有层次遍历.二叉树高度和叶子个数的计算和遍历相差不大,只是加些判断条件,总体来说,本次试验不太好做,期间出现了很多逻辑错误,变量初始化的问题等,不过经过仔细排查最后都一一解决了。
实验四:
查找与排序
(1)掌握折半查找算法的实现。
(2)掌握冒泡排序算法的实现。
1.编写折半查找程序,对以下数据查找37所在的位置。
5,13,19,21,37,56,64,75,80,88,92
2.编写冒泡排序程序,对以下数据进行排序。
49,38,65,97,76,13,27,49
(1)查找算法的代码如下所示:
#include"
stdio.h"
malloc.h"
#defineOVERFLOW-1
#defineOK1
#defineMAXNUM100
#defineN10
typedefintElemtype;
typedefintStatus;
typedefstruct
{
Elemtype*elem;
intlength;
}SSTable;
StatusInitList(SSTable&
ST)
inti,n;
ST.elem=(Elemtype*)malloc(MAXNUM*sizeof(Elemtype));
if(!
ST.elem)return(OVERFLOW);
printf("
输入元素个数和各元素的值:
"
);
scanf("
%d\n"
&
n);
for(i=1;
i<
=n;
i++)
{
%d"
ST.elem[i]);
}
ST.length=n;
returnOK;
}
intSeq_Search(SSTableST,Elemtypekey)
inti;
ST.elem[0]=key;
for(i=ST.length;
ST.elem[i]!
=key;
--i);
returni;
intBinarySearch(SSTableST,Elemtypekey)
intmid,low,high,i=1;
low=1;
high=ST.length;
while(low<
=high)
mid=(low+high)/2;
if(ST.elem[mid]==key)
returnmid;
elseif(key<
ST.elem[mid])
high=mid-1;
else
low=mid+1;
}
return0;
voidmain()
SSTableST;
InitList(ST);
Elemtypekey;
intn;
key="
key);
\n\n"
/*printf("
AfterSeqSearch:
:
"
n=Seq_Search(ST,key);
positionisin%d\n\n"
n);
*/
AfterBinarySearch:
n=BinarySearch(ST,key);
if(n)
printf("
else
notin\n\n"
实验结果如下所示:
(2)排序算法的代码如下所示:
voidSort(SSTableST)
inti,j,t;
ST.length;
for(j=i+1;
j<
=ST.length;
j++)
if(ST.elem[i]>
ST.elem[j])
{
t=ST.elem[i];
ST.elem[i]=ST.elem[j];
ST.elem[j]=t;
}
voiddisplay(SSTableST)
%d"
ST.elem[i]);
SSTableST;
printf("
beforesort:
\n"
display(ST);
Sort(ST);
\naftersort:
通过这次实验,我明白了程序里的折半查找和冒泡查找.其实排序可以有很多种,但是其目的应该都是为了能够在海量的数据里迅速查找到你要的数据信息,折半查找是种比较快的方式,但前提是要是有序的排序才可以。
对于有序表,查找时先取表中间位置的记录关键字和所给关键字进行比较,若相等,则查找成功;
如果给定值比该记录关键字大,则在后半部分继续进行折半查找;
否则在前半部分进行折半查找,直到查找范围为空而查不到为止。
折半查找的过程实际上死先确定待查找元素所在的区域,然后逐步缩小区域,直到查找成功或失败为止。
算法中需要用到三个变量,low表示区域下界,high表示上界,中间位置mid=(low+high)/2.而冒泡查找则是从小到大的排序.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构