最终版三级数据结构讲义王娟Word格式.docx
- 文档编号:19537782
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:27
- 大小:85.75KB
最终版三级数据结构讲义王娟Word格式.docx
《最终版三级数据结构讲义王娟Word格式.docx》由会员分享,可在线阅读,更多相关《最终版三级数据结构讲义王娟Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
数据元素:
是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据项:
有时,一个数据元素可由多个数据项组成。
数据项是数据的不可分割的最小单位。
举例
[08秋20]以下有关数据的论述中,正确的是_________。
A.数据是能被计算机识别、存储和处理的符号的集合
B.数据元素是数据的不可分割的最小单位
C.数据项是数据的基本单位
D.数据由若干个数据项构成,通常将数据项作为一个整体进行考虑和处理
4.数据结构
数据结构的形式定义:
数据结构是一个二元组
Data_Structure=(D,S)
其中,D是数据元素的有限集,S是D上关系的有限集。
逻辑结构:
集合、线性、树形、图或网状
[09秋20]抽象地反映数据元素之间在结构上的约束关系并不考虑其在计算机中的存储方式,称为数据的_________。
A.逻辑结构B.层次结构C.物理结构D.存储结构
存储结构:
顺序、链接、索引、散列
[08春16]在数据结构中,数据的运算_________。
A.效率与采用何种存储结构有关
B.是根据存储结构来定义的
C.分为算术运算和关系运算两大类
D.必须用高级程序设计语言来描述
[09春20]下列有关数据结构的叙述中,正确的是_________。
A.线性表、栈和队列的顺序存储结构及其操作是一致的
B.数组以行序为主序排列时元素下标排列次序的变化为:
先变化最右边的下标,从右向左,最后变化最左边的下标
C.非空二叉树中每个结点有且只有一个双亲
D.图的遍历算法中增设一个访问数组用于存放顶点的数据
二、线性表
1.线性表是由n个具有相同特性的数据元素组成的线性序列。
[09秋21]下列关于线性表的叙述中,正确的是_________。
A.同一表中的元素必须相同类型,不同表中的元素必须相同类型
B.同一表中的元素可以不同类型,不同表中的元素必须相同类型
C.同一表中的元素必须相同类型,不同表中的元素可以不同类型
D.同一表中的元素可以不同类型,不同表中的元素可以不同类型
2.逻辑结构:
线性结构
3.存储结构:
顺序存储结构/链式存储结构
顺序存储结构的线性表需要一组连续的存储单元依次存储元素,因此知道存储的起始地址以及每个元素所占空间即可求出第I个元素的存储地址,而链式存储结构的线性表则无需连续空间,因此也无法计算其地址;
链式存储结构的线性表进行插入、删除等运算时不需要移动其他结点,而顺序存储结构的线性表则不然;
[10春20]以下有关存储结构的叙述中,错误的是_________。
A.存储结构是数据结构在计算机存储器中的表示
B.顺序存储结构是指数据已按其关键字升序(或降序)排好序的存储结构
C.链式存储结构线性表在插入、删除等操作方面比顺序存储更简单
D.顺序存储结构线性表在存取元素方面比链式存储更快捷
4.顺序存储结构的线性表的运算
插入、删除以及其算法分析
5.线性链表的运算
插入、删除以及两链表合并
[07秋18]指针h指向非空带表头结点的循环链表,h指向结点的指针域用h->
next(即h^.next)表示,p为指向链表中任一结点的指针。
若h->
next=p(即h^.next=p),则表示p指向_______。
A.表头结点B.链表第1个结点C.链表第2个结点D.链表尾结点
[08春18]设单链表中指针P指向结点A,若要删除A后面的一个结点(已存在,)则需要修改指针的操作为_______(①、②功能相同)。
1类程序设计语言描述形式
p所指结点的指针域用p^.next表示,“←”为赋值号。
A.p^.next←p^.next^.nextB.p←p^.next
C.p←p^.next^.nextD.p^.next←p
②C++语言描述形式
P所指结点的指针域用p->
next表示。
A.p->
next=p->
next->
nextB.p=p->
next
C.p=p->
nextD.p->
next=p
[08秋16]在长度为n的线性表中,删除数据域值为x的元素,查找该元素采用线性查找法,若表中各个位置上删除元素的概率都相同,则删除算法的时间复杂度为_______。
A.O(n)B.O(㏒2n)C.O(n㏒2n)D.O(n2)
[09春22]某线性链表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则下列存储结构中,采用_______最节省操作时间。
A.仅有头指针的循环单链表B.仅有头指针的非循环单链表
C.有尾指针的循环单链表D.带表头结点的双向循环链表
[08秋76]delmax1和delmax2分别是用类程序设计语言和C++语言描述的,删除带表头结点的单链表lk中数据域值最大的结点的算法。
链表中的结点node包括一个整型数据域data和一个指向后继结点的指针域next,如图2所示。
请选择一种算法描述形式,在算法中的空格处填入正确内容并回答问题(
、
任选一题,只能选做一题)。
类程序设计语言描述形式(略)
C++语言描述形式
p指向的结点的数据域用p->
data表示、指针域用p->
算法中,NULL为空指针。
Algorithmdelmax2(lk)
//lk为单链表的头指针
//m为整型量
//p,q,r为辅助指针
{r=lk;
p=lk->
next;
if(p!
=NULL){
m=p->
data;
(20);
p=p->
while(p!
=NULl){
if((21)){
m=p->
(22)
}
q=p;
p=p->
}
q=r->
(23);
delete(q);
}
回答以下问题:
(24)该算法中的r变量最终指向数据域值最大结点的(24)(前驱结点或后继结点)。
(25)若算法中的链表是循环单链表,则程序中的“p!
=NULL”这个条件应改为(25)。
(26)设lk单链表中的结点数据域值依次为3,1,7,5,4,则程序执行结束时,m=(26)。
[10秋22]设h指向带表头结点的循环链表,h=(a1,a2,a3),p指向循环链表中的一个结点。
若p->
next==a1(“==”为等于关系运算符),则p是指向_________的指针。
其中,p指向结点的指针域用p->
A.表头结点B.数据域值为a1的结点
C.数据域值为a2的结点D.数据域值为a3的结点
6.双向链表
结构:
插入:
删除:
[09秋76]函数insertdl1和insertdl2分别是用类程序设计语言和C++语言描述的算法。
其功能是在dl指向的带表头结点双向循环链表中,将数据域值为x的新结点插在数据域值为ai的结点之前,并返回插入位置i值,如果表中数据域值为ai的结点不存在,则返回值i为0。
链表结点如图2所示,结点类型为dnode,数据域data为整型,前、后链域分别为prior和next。
dl
prior
data
Next
dnode
图2双向链表结点
C++语句描述形式
符号&
开头的参数为引用参数。
dl指向链表结点的数据域用dl->
data表示,前、后链域分别用dl->
prior、dl->
Algorithminsertdl2(&
dl,ai,x)
//insertdl2函数的类型为整型
//dl为指向双向循环链表的头指针
//ai,x为双向循环链表结点数据域类型
//i为整型
//p,s为辅助指针
{
p=dl;
i=0;
while((20)&
&
p->
data!
=ai){
p=p->
(21)
if(p->
data==ai){
s=newdnode;
(22);
s->
next=p->
prior=p;
p->
next=s;
++i;
elsei=0;
returni;
(24)设dl指向的双向循环链表为非空表,链表第一个结点数据域在算法描述时应表示为(24)。
(25)设dl=(18,45,36,27),ai=36,x=90,上述算法执行后,dl=((25))。
(26)上述算法中若数据域值为ai的结点存在,则指针s指向的结点位于指针p指向的结点(26)(之前/之后)。
[10春22]设h是指向链表的头指针,链表中第1个结点数据域值为a1,p是指向链尾结点的指针。
h指向结点的数据域用h->
data(即h^.data)表示,指针域用h->
next(即h^.next)表示。
data==a1(即h^.next^.data=a1),h==p->
next(即h=p^.next),则该链表是_______。
A.带表头结点的单链表B.带表头结点的循环链表
C.不带表头结点的单链表D.不带表头结点的循环链表
三、数组
1.由于数组一般不作插入或删除操作.因此,一般采用顺序存储结构表示数组。
数组可看成是一个定长的线性表,其元素也是一个定长的线性表。
顺序存储结构
4.数组存储位置的计算
以行为主序
以列为主序
[07秋19]二维数组A(元素为A[0][0]~A[7][8])按行优先方式存储,若数组元素A[2][4]的存储地址为1090,A[4][6]的存储地址为1150,则数组元素A[6][7]的存储地址为_________。
A.1204B.1207C.1209D.1211
[08春19]设有二维数组A[b1][b2],若以行为主序存储时元素A[i][j]的存储地址为D,以列为主序存储时存储地址也等于D的元素为A[row][col],则row、col值的计算公式分别为_________。
(其中:
运算符“/”为整除符,即div;
运算符“%”为取余符,即mod)。
A.(b1*j+i)/b2,(b1*j+i)%b2B.(b1*j+i)%b2,(b1*j+i)/b2
C.(b2*i+j)/b1,(b2*i+j)%b1D.(b2*i+j)%b1,(b2*i+j)/b1
[08秋23]二维数组A的元素存放在A[0][0]~A[8][10]中,每个元素占5个字节,若按列优先次序存储,起始地址为1000,则存储元素A[5][5]的起始地址是_________。
A.1250B.1300C.1255D.1305
[09春23]设二维数组B的元素存放在B[0][0]~B[9][19]中,每个元素占L个存储单元,则B按列优先次序存放时元素B[6][6]的地址与B按行优先次序存放时元素_________的地址相同。
A.B[3][5]B.B[3][6]C.B[5][3]D.B[6][6]
[09秋23]将下三角矩阵
的非零元素按行优先顺序依次存储在一维数组B[1..m]中,其中,m=n(n+1)/2,则非零元素
(1
j
i
n)在B数组中的元素下标是_________。
A.i*(i+1)/2+jB.i*(i+1)/2+(j-1)C.i*(i-1)/2+jD.i*(i-1)/2+(j-1)
[10春23]二维数组A的元素存放在A[0][0]~A[9][7]中,起始地址为LOC,若以行优先次序存储,元素A[3][6]的起始地址为LOC+60L,则以列优先次序存储时,地址为LOC+86L的元素是_________。
A.A[2][4]B.A[3][4]C.A[4][3]D.A[5][3]
[10秋23]二维数组A存储在A[0][0]~A[7][9]中,起始存储地址为LOC,数组元素A[2][5]的存储地址为LOC+168,下列关于数组A及元素的叙述中,正确的是_________。
A.数组A以行为主序B.每个元素占2个存储单元的空间
C.数组元素A[4][3]的存储地址为LOC+112D.存储地址为LOC+80的元素为A[2][0]
5.稀疏矩阵(三元组表)
四、栈
1.栈是一种特殊的表,这种表只在表头进行插入和删除操作。
因此,表头对于栈来说具有特殊的意义,称为栈顶。
相应地,表尾称为栈底。
不含任何元素的栈称为空栈。
栈的修改是按后进先出的原则进行的。
因此,栈又称为后进先出(LastInFirstOut)表,简称为LIFO表。
所以,只要问题满足LIFO原则,就可以使用栈。
4.栈的运算(顺序存储结构/链式存储结构):
栈空的判别条件
进栈、出栈
共享栈
[07秋76]算法convert1和convert2分别是用类程序设计语言和C++语言描述的、将顺序结构栈s转换为链式结构栈(即链栈)sp,并输出栈中元素个数的算法。
链栈结点如图1所示,其中,结点类型为node,data为数据域,next为指针域。
图1链栈结点
算法中,可直接调用的算法及其功能说明如下:
getnum(s)取s栈元素个数函数(整型)
empty(s)判s栈空函数
pop(s,&
x)s栈元素出栈,由x返回
请选择一种算法描述形式,在算法中的空格处填入正确内容并回答问题(①、②任选一题,只能选做一题)。
1类程序设计语言描述形式(略)
②C++语言描述形式
符号&
sp指向结点的数据域用sp->
data表示、指针域用sp->
Algorithmconvert2(s,&
sp)
//s为顺序结构栈
//sp为链栈栈顶指针
//n为整型量
//x为s栈的元素类型
//p为辅助指针
n=(19);
if(n){
sp=newnode;
pop(s,x);
sp->
data=x;
(20);
while(!
empty(s)){
p->
next=newnode;
pop(s,x);
(21);
}
(22);
elsesp=NULL;
cout<
<
“n=”<
n<
‘\n’;
回答以下问题:
(23)链栈与顺序栈的存储结构是否相同?
(23)。
(24)、(25)设s=(a21,a22,a23,a24,a25),栈底元素为a21,上述算法执行过程中,转换为链栈的第一个结点是(24),语句pop(s,x)的执行次数为(25)。
(26)上述算法中,在(26)情况下,语句sp=NULL才会被执行。
[08秋21]设栈s初始为空,入栈元素序列为{e1、e2、e3、e4},在栈s上依次执行下列操作:
push,pop,push,push,pop,push,则栈s中元素个数和出栈元素个数分别是_________。
A.1,3B.2,2C.3,1D.4,0
[10春21]现有A、B、C三个元素依次进栈,进栈过程中可以出栈,则出栈次序有_________种。
A.1B.3C.5D.6
[10秋21]设顺序结构栈s的元素存储在s.e[0]~s.e[s.top-1]中,其中s.top表示栈顶指示域,初值为0。
若s.top!
=0(“!
=”为不等于关系运算符),则将栈顶元素出栈并赋值给x的正确的语句是_________。
A.x=s.e[--s.top];
B.x=s.e[s.top--];
C.x=s.e[++s.top];
D.x=s.e[s.top++];
5.栈的应用
五、队列
1.队列是一种特殊的线性表。
对这种线性表,删除操作只在表头(称为队头)进行,插入操作只在表尾(称为队尾)进行。
队列的修改是按先进先出的原则进行的,所以队列又称为先进先出(FirstInFirstOut)表,简称FIFO表。
[07秋16]下列数据结构的顺序存储结构中,不可对其元素的数据域值进行随机存取的结构是_______。
A.线性表B.数组C.队列D.二叉树
4.假上溢:
rear=n(即max),front>
0时进行入队操作
5.环形队列(front总是指向对头元素的前一个位置,队满时环形队列中仍有一元素空位,由front指示着!
)
队列空的判别条件:
cq.front=cq.rear
队列满的判别条件:
cq.front=(cq.rear+1)mod(max+1)
入队
出队
[08春17]用一个大小为6的一维数组来实现环形队列,设当前队尾rear和对头front的值分别为0和3。
当从队列中删除一个元素,再加入两个元素后,rear和front的值分别是______________。
A.1和5B.2和4C.4和2D.5和1
[09春21]环形队列用a[0..m-1]存放其元素值,设front指向队头元素的前一个位置,rear指向队尾元素,则当前队列中有______________个元素。
A.(rear-front+m)%mB.(rear-front+1)%mC.rear-front-1D.rear-front
[09秋22]设有环形队列cq,其队列元素空间表示为cq.e[0]~cq.e[max],cq.front指向队头元素的前一个位置,cq.rear指向队尾元素位置,则队列满的判断条件是______________,其中m=max+1,“==”为等于关系运算符,%(即mod)为取余运算符。
A.cq.front==cq.rearB.cq.rear+1==m
C.(cq.front+1)%m==cq.rearD.(cq.rear+1)%m==cq.front
6.链队列
[08秋22]qp链队列结构中包括队头指针front和队尾指针rear两个域,分别用qp.front和qp.rear表示,qp为带表头结点的链队列,元素结点指针域为next。
如果qp.front->
next==qp.rear(或qp.front^.next=qp.rear),则表示_________。
A.链队列空B.链队列满
C.链队列中只有一个结点D.链队列元素首尾相连接
六、树
1.树是具有相同特性的n个结点的有限集,有且仅有1个根结点,其余结点分为m个互不相交的集合,每个集合本身也是树,称为根的子树。
2.基本术语
1)结点的度:
结点的子树个数(即分枝数目)
2)树的度:
树中结点的最大度
3)叶子和分支结点:
度为0的结点称为叶子(或终端结点),度不为0的结点称为分支结点(或非终端结点)
4)双亲与孩子:
结点的子树的根称为结点的孩子,该结点称为孩子的双亲
5)兄弟:
同一双亲的子女互称兄弟,其父母为兄弟的结点互称堂兄
6)结点的层数:
根为第一层,根的孩子为第二层,以此类推
7)树的深度:
树中结点的最大层数称为树的深度(或高度)
8)有序树:
结点的子树从左到右有顺序,不能互换,否则,称为无序树
9)森林:
不相交的树的集合,除去根结点后的子树集合就是森林
3.二叉树
1)二叉树T是有限个结点的集合,它或者是空集,或者由一个根结点u以及分别称为左子树和右子树的两棵互不相交的二叉树u
(1)和u
(2)组成。
2)满二叉树、完全二叉树
3)几个重要性质
Ø
n0=n2+1;
根为第1层,则第i层最多有2i-1个结点;
深度为k的二叉树至多有2k-1个结点
[07秋20]结点总数为n的完全二叉树中,其叶结点数为_________。
其中,运算符“/”为整除符。
A.n/2B.(n-1)/2C.(n+1)/2D.(n-2)/2
[08春20]有关二叉树的下列说法中,正确的是_________。
A.二叉树的度为2B.二叉树的度可以小于2
C.二叉树中至少有一个结点的度为2D.二叉树中任何一个结点的度都为2
[08春21]一棵满二叉树,若共有n个结点和m个叶子结点,则_________。
A.n=2m-2B.n=2m-1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最终版 三级 数据结构 讲义