数据结构知识点.doc
- 文档编号:144589
- 上传时间:2022-10-04
- 格式:DOC
- 页数:27
- 大小:2.34MB
数据结构知识点.doc
《数据结构知识点.doc》由会员分享,可在线阅读,更多相关《数据结构知识点.doc(27页珍藏版)》请在冰豆网上搜索。
复习要点:
第一章
1.相关基本概念:
数据、数据元素(基本单位)、数据项(最小单位)、算法及其特征等;
◎数据:
所有能输入到计算机中并被计算机程序处理的符号总称。
◎数据元素:
基本单位。
◎数据项:
最小单位。
◎算法特征(5点):
有穷性;确定性;可行性;输入;输出。
2.逻辑结构、存储结构(物理结构)及其类型;
◎逻辑结构有四种基本类型:
集合、线性结构、树形结构和网状结构。
◎数据元素之间的关系有两种不同的表示方法:
顺序映象和非顺序映象,并由此得到两种不同的存储结构:
顺序存储结构和链式存储结构。
◎注:
期中考题目
数据结构分为两大类,即为逻辑结构和存储结构。
其中逻辑结构又分为线性结构和非线性结构,存储结构一共有四种(顺序、链接、索引、散列)。
3.算法分析:
语句频度(执行次数)计算、时间和空间复杂度分析。
表示方法
◎语句频度:
直接写次数。
◎时间复杂度:
O(执行次数),如:
O(n)。
◎空间复杂度:
O(所需空间)
第二章
1.顺序表(数组)插入、删除、有序表合并算法及其移动次数计算;
12
13
21
24
28
30
42
77
数据元素
序号12345678
表示L.elem[0][1][2][3][4][5][6][7]
◎顺序表插入
算法思想:
如果要在序号5前插入元素e,需要将序号5~8向后移动一个位置。
▲移动次数为4次,公式n-i+1
◎顺序表删除
算法思想:
如果要删除序号5元素,需要将6~8依次向前移动一位
▲移动次数为3次,公式n-i
◎有序表合并
LA=(3,5,8,11)
LB=(2,6,8,9,11,15,20)
则LC=(2,3,5,6,8,8,9,11,11,15,20)
算法思想(以非递减为例):
La和Lb非递减排列,La与Lb中元素逐个比较,较小的先插入Lc中。
▲注:
非递减是指递增排序,但元素有可能相等,与之相对的有非递增排序。
▲移动次数为(La.length+Lb.length)
2.链表(有无头节点、单双、循环)插入(前、后)、删除(前、本身、后)的指针挂接、建立(不带头节点)算法。
◎单链表
▲每个节点有数据域和指针域datanext
头a1a2a3a4a5a6
带头节点L→→→→→→→
P↑
a1a2a3a4a5a6
不带头节点L→→→→→→
P↑
单循环链表
●在P(a3)节点前插入S节点
(1)Q=P;//先让Q指向a3
(2)P=L;//P指向第一个节点(带头结点指向头结点,不带头结点指向a1)
(3)while(P->next!
=Q)P=P->next;//找到a3的前驱a2,P指向a2
(4)S->next=P->next;//P->next为a3,让S->next等于a3
(5)P->next=S;//a2指针域指向节点S
●在P(a3)节点后插入S节点
(1)S-next=P->next;
(2)P->next=S;
●删除P(a3)前一个节点
(1)Q=P;
(2)P=L;
(3)while(P->next->next!
=Q)P=P->next;//找到a1
(4)P->next=P->next->next;//让a1指针域指向a3,从而删除a2
●删除P(a3)节点
(1)Q=P;
(2)P=L;
(3)while(P->next!
=Q)P=P->next;//找到a2
(4)P->next=P->next->next;//让a2指针域指向a4,从而删除a3
●删除P(a3)后一个节点
(1)P->next=P->next->next;//让a3指针域指向a5,从而删除a4
◎双链表
▲每个节点有前驱指针、数据域、后继指针priordatanext
双循环链表
头a1a2a3a4
●在P(a2)节点前插入S节点
▲技巧:
先让S->prior和S->next与链表建立关系
注:
步骤(4)必须在步骤(3)后面
(1)S->next=P;//先让S->next指向a2
(2)S->prior=P->prior;//S->prior指向a1
(3)P->prior->next=S;//再把a1->next指向S
(4)P->prior=S;//a2->prior指向S
●在P(a2)节点后插入S节点
注:
步骤(4)必须在步骤(3)后面
(1)S->prior=P;
(2)S->next=P->next;
(3)P->next->prior=S;//a3->prior指向S
(4)P->next=S;
●删除P(a2)前一个节点a1
(1)Q=P->prior;//Q指向要被删除的a1;
(2)P->prior=P->prior->prior;//P->priro指向头
(3)P->prior->next=P;//头->next指向P
(4)free(Q);//释放a1的存储空间
●删除P(a2)节点
(1)P->next->prior=p->prior;
(2)P->prior->next=p->next;
(3)free(P);
●删除P(a2)后一个节点a3
(1)Q=P->next;
(2)P->next=P->next->next;//a2->next指向a4
(3)P->next->prior=P;//a4->prior=P
(4)free(Q);//释放a3存储空间
◎建立(不带头节点)单链表
读程序:
设n为2(i取0,1)
i=0时,
p↑L↑q↑
i=1时,→
L↑q↑p↑L↑q↑p↑
→
L↑q↑p↑
第三章
1.栈的进出序列、栈、队列、循环队列的满/空条件;
▲由于栈的插入、删除操作是限制在栈顶进行的,因而后进栈的元素必然是先出栈,0.所以栈是“后进先出”表。
▲由于队列的输入、输出操作分别在队的两端进行,因此先入队的元素必然先输出,故队列又称为“先进先出”表
◎栈的进出序列
例题:
进栈序列为123,可能得到的出栈序列是什么?
答:
共五种123/132/213/231/321
进出栈情况(以132序列为例):
1进栈→1出栈,输出1→2进栈→3进栈→3出栈→2出栈输出32
◎栈、队列、循环队列的满/空条件
栈空条件:
s.top=s.base;栈满条件:
s.top-s.base=stacksize;
队空条件:
Q.front=Q.rear;队满条件:
q->rear-q->front=MAXSIZE
循环队列空条件:
Q.front=Q.rear
循环队列满条件:
为避免在队满是队头指针和队尾指针也是重合的情况,规定队列中
还有一个空的存储单元时为队满,即为Q.front=(Q.rear+1)MODmaxsize(MOD为取余
运算符)。
因而,这种循环队列不适合用动态数组作为存储结构。
2.栈、队列的存储结构、基本操作算法(双向栈);
◎栈存储结构
●顺序栈
typedefstruct{
SElemType*base;
SElemType*top;
intstacksize;
}SqStack;
●链式栈
◎队列存储结构
●顺序存储结构
●链式存储结构
◎双向栈
存储结构:
typedef struct{
Elemtype *base[2];
Elemtype *top[2];
}BDStacktype; //双向栈类型
初始化:
StatusInit_Stack(BDStacktype&tws,intm)//初始化一个大小为m的双向栈tws
{
tws.base[0]=(Elemtype*)malloc(sizeof(Elemtype)*m);
tws.base[1]=tws.base[0]+m;
tws.top[0]=tws.base[0];
tws.top[1]=tws.base[1];
returnOK;
}//Init_Stack
入栈:
Statuspush(BDStacktype&tws,inti,Elemtypex)
//x入栈,i=0表示低端栈,i=1表示高端栈
{
if(tws.top[0]>tws.top[1])returnOVERFLOW;
//注意此时的栈满条件
if(i==0)*tws.top[0]++=x;
elseif(i==1)*tws.top[1]--=x;
elsereturnERROR;
returnOK;
}//push
出栈:
Statuspop(BDStacktype&tws,inti,Elemtype&x)
//x出栈,i=0表示低端栈,i=1表示高端栈
{
if(i==0)
{
if(tws.top[0]==tws.base[0])returnOVERFLOW;
x=*--tws.top[0];
}
elseif(i==1)
{
if(tws.top[1]==tws.base[1])returnOVERFLOW;
x=*++tws.top[1];
}
elsereturnERROR;
returnOK;
}//pop
第四章
1.字符串模式匹配的简单算法;
intIndex(SStringS,SStringT,intpos)
{//算法4.5
//返回子串T在主串S中第pos个字符之后的位置。
//若不存在,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 知识点