文档介绍:第一章:概述
1、程序 =算法+数据结构 2、算法的几个基本特征:能行性 确定性 有穷性 拥有足够
的情报
3、算法的复杂度主要包括: 时间复杂度和空间复杂度
第二章:数据结构
1、逻辑结构:数据集合中各数据元素之间所固有的逻辑关线
的,其余层都是满的。
22、前序遍历、中序遍历、后续遍历(前中后对应的是根结点
的访问顺序)
前序遍历:先根结点,再左再右
中序遍历:先左,再根结点,再右
后续遍历:先左,再右,再根结点
23、若给出三种遍历中的任意两种遍历,要求写出第三种遍历,
思路如下:
先正确画出对应的二叉树,根据已给条件进行验证,最后写出
第三种遍历
24、三种遍历的程序实现
⑴前序遍历
()
*p;
;
(p);
<<;
)
(*p)
(
()
(
<<><<;;
J
(>);
(>);
)
)
⑵中序遍历
()
(
*p;
;
(p);
<<;
)
()
(
(>);
<<><<;;
J
(>);
)
)
⑶后续遍历
()
(
*p;
;
(p);
<<;
)
(*p)
(
()
(
(>);
(>);
<<><<” ;
}
25、有序树转二叉树最最简便的方法
对于有序树中的每一个结点,保留与其第一个子结点(即最左
边的子结点)的链接,断开与其他子结点的链接,且将其他子
结点依次链接在第一个子结点的右边。
26、后边的叫数据成员(私有变量),后边的叫成员函数,其
中函数名与类名完全相同,并且无返回值(也不能加)的叫构
造函数,这个知识点老师说占 4 分的分值,而且老师还说一打
眼就可以看出答案来的,方法我都告诉小超了呢。
第三章:查找与排序
1、无序表只能用顺序查找,有序表可用对分查找,分块查找时,
各子表的长度可以相等,也可以互相不等,但要求后一个子表
中的每一个元素均大于前一个子表中的所有元素。
2、查找效率比较:顺序查找<分块查找<对分查找<哈希表查找
3、有序表的插入函数
( * n, x )
{
k;
() << ”出现上溢错误! ” <<;
1;
(v[k]>x)
{
v[1][k];
1;
}
}
4、有序表的删除函数
( *v, n, i)
{
k;
(0) << ”出现下溢错误!” <<;
((i<1)(i>n)) << ”线性表里不存在该元素,不进行删除操
作!” <<;
(<)
v[1][k];
1;
}
5、有序表的对分查找函数
( n)
{
;
1;
;
(i<)
{
()/2;
(v[1]) <<v[1](1);
(v[1]>x) 1;
}
(-1);
}
6、冒泡排序的原理以及程序实现
原理:相邻两个元素比较大小,要是大,往后移,要是小,不
要动,这样每进行一次就可以把最大的那个移到末尾了
程序实现:
( * n)
{
;
;
(1<)
(0<)
(s[j]>s[1])
{
[j];
s[j][1];
s[1];
}
}
7、快速排序的原理以及程序实现
原理:我明白快速排序了,在考试的时候,老师已经明确说了
将第一个元素作为关键字,所以这样的话 ,将第一个元素设为
p (k),并将p (k)的值赋给T,然后设置两个指针i和j分
别指向表的起始与最后的位置。反复作以下两步:
⑴将j逐渐减小,并逐次比较P (j )与T,直到发现一个P (j )
<T为止,将P (j )移到P (i )的位置上。
⑵将i逐渐增大,并逐次比较P (i )与T,直到发现一个P
( i ) >T 为止,将 P( i )移到 P(j )的位置上。
上述两个操作交替进行,直到指针 i 与 j 指向同一个位置(即)
为止,此时将T移到P (i )(即P (j ))的位置上。
程序实现:
( * n )
{
;
*s;
();
();
( 1);
(1);
();
}
( * n)
{
;
T;
0; 1;
[0];
()
{
((i<j)(p[j]>))
1;
(i<j)
{
p[i][j]1;
((i<j)(p[i]<))
1;
(i<j)
{p[j][i]1;}
}
}
p[i];
(i);
}
8、简单插入排序的原理及程序实现
原理:就是从第二个元素开始,往前插到它应该在的位置就好 啦 ,还是蛮实用的嘛
程序实现:
( * n)
{
;
t;
(1<)
{ [j];
1;
((k>=0)(p[k]>t))
{p[1][k]1;}
p[1];
}