数据结构专升本资料第一周

数据结构专升本资料第一周
数据结构专升本资料第一周

第一章概论

1.1 基本概念和术语

数据结构:数据之间的相互关系,即数据的组织形式。它包括三个方面内容:

1、数据元素之间的逻辑关系,也称为数据的逻辑结构;

2、数据元素及其关系在计算机存储器内的表示,称为数据的存储

结构;

3、数据的运算,即对数据施加的操作。

数据的逻辑结构有两大类:

1、线性结构:

结构中有且仅有一个始结点和一个终结点,并且每个结点最多只有一个直接前驱和一个直接后继。如线性表。

2、非线性结构:

结构中的结点可能有多个前驱结点和多个后继结点。如集合、树、图。

数据的存储结构有四种基本存储方法:

1、顺序存储方法

2、链接存储方法

3、索引存储方法

4、散列存储方法

1.3 算法的描述和分析

算法的时间复杂度和空间复杂度

?时间复杂度: 指在计算机上运行该算法所花费的时间。

?一个算法中的语句重复执行次数称为语句频度。

?算法的运行时间由程序中所有语句的语句频度之和构成。

?一般情况,算法的时间复杂度由算法中基本操作(即嵌套最深

层语句)重复执行的次数的数量级决定。

?算法的时间复杂度用T(n)=O(数量级)来表示。

算法的时间复杂度的具体步骤

⑴找出算法中的基本语句;

算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。

⑵计算基本语句的执行次数的数量级;

只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。

⑶用大Ο记号表示算法的时间性能。

将基本语句执行次数的数量级放入大Ο记号中。

如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:

for (i=1; i<=n; i++)

x++;

for (i=1; i<=n; i++)

for (j=1; j<=n; j++)

x++;

第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n2),则整个算法的时间复杂度为Ο(n+ n2)=Ο(n2)。举例:

#define n 100

Void MatrixMultiply(int A[n][n],int B[n][n],int C[n][n]) { int i,j,k;

1 for (i=0;i

2 for (j=0;j

3 C[i][j]=0; n2

4 for (k=0;k

5 C[i][j]=C[i][j]+A[i][j]*B[i][j]; n3

频度之和:2n3+3n2+2n+1

其实,该算法的基本操作是语句5,其重复执行的次数f(n)= n3

因而,该算法的时间复杂度T(n)=O(n3)

常用时间复杂度有如下关系:

O(1)≤O(log2n)≤O(n)≤O(nlog2n)≤O(n2)≤O(n3)≤…≤O(n k)≤O(2n)

Ο(1)表示基本语句的执行次数是一个常数,一般来说,只要算法中不存在循环语句,其时间复杂度就是Ο(1)。

例如:Temp=i;i=j;j=temp;

以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。

举例:

1. sum=0;(一次)

for(i=1;i<=n;i++) (n次)

for(j=1;j<=n;j++) (n2次)

sum++;(n2次)

解:T(n)=2n2+n+1 =O(n2)

2. for (i=1;i

{

y=y+1; ①

for (j=0;j<=(2*n);j++)

x++; ②

}

解:语句1的频度是n-1

语句2的频度是(n-1)*(2n+1)=2n2-n-1

f(n)=2n2-n-1+(n-1)=2n2-2

该程序的时间复杂度T(n)=O(n2).

3. a=0;

b=1; ①

for (i=1;i<=n;i++) ②

{

s=a+b;③

b=a;④

a=s;⑤

}

解:语句1的频度:1,

语句2的频度:n,

语句3的频度:n-1,

语句4的频度:n-1,

语句5的频度:n-1,

T(n)=1+n+3(n-1)=4n-2=O(n).

4. for (i=1; i<=n; i+=2) ; 的时间复杂度为。

A: O(n) B: O(log2n) C: O(n2) D: O(n3)

5. i=1; ①

while (i<=n)

i=i*2; ②

解:语句1的频度是1,

设语句2的频度是f(n), 则:2^f(n)<=n;f(n)<= log2n

取最大值f(n)= log2n,

T(n)=O(log2n)

6. for(i=1;i<=n;i++)

{

for(j=1;j<=i;j++)

{

for(k=1;k<=j;k++)

x=x+2;

}

}

解:循环共进行了: 1+(1+2)+(1+2+3)+…+(1+2+3+…+n)=n(n+1)(n+2)/6所以,时间复杂度为T(n)=O(n^3).

空间复杂度:是指算法运行过程中临时占用的存储空间大小。(大致数量级)

第二章线性表

线性结构的特点

存在唯一的一个被称做“第一个”的数据元素;

存在唯一的一个被称做“最后一个”的数据元素;

除第一个之外,集合中的每个数据元素均只有一个前驱;

除最后一个之外,集合中每个数据元素均只有一个后继。

2.1线性表的类型定义

线性表(Linear List):是由n个性质相同的数据元素组成的有限序列,记为(a1,a2,a3,…,a n)。表中数据元素的个数n定义为线性表的长度。n=0的表称为空表,即该线性表不包含任何数据元素。a i是第i个数据元素,i称为位序。

常见的线性表的基本运算:

InitList(L)

ListLength(L)

GetNode(L,i) 1≤i≤ListLength(L)。

LocateNode(L,x)

InsertList(L,x,i) 1≤i≤n+1

DeleteList(L,i) 1≤i≤n

2.2 线性表的顺序表示和实现

一、顺序表的定义

顺序表:即用一组连续的存储单元依次存放线性表的数据元素。

若每个数据元素占用c个存储单元,并以所占的第一个存储单元地址作为这个数据元素的存储位置,则表中任一元素ai的存储地址为:LOC(ai)=LOC(a1)+(i-1)*c1≤i≤n

二、顺序表的特点

为表中相邻的元素a i和a i+1赋以相邻的存储位置LOC(a i)和LOC(a i+1)。

顺序表是一种随机存取的存储结构

三、顺序表上实现的基本运算:

#define ListSize 100

typedef int DataType;

typedef struct

{ DataType data[ListSize]; //向量data用于存放表结点int length; //当前的表长度

}SeqList;

1、插入

void InsertList(SeqList *L,DataType x,int i)

{//将新结点x插入L所指的顺序表的第i个结点的位置上

if (i<1 || i>L->length+1){

printf("插入位置非法");

exit(0);

}

if (L->length>=ListSize){

printf("表空间溢出,退出运行");

exit(0);

}

for (j= L->length-1;j>=i-1;j--)

L->data[j+1]= L->data[j];

L->data[i-1]=x;

L->length++;

}

一般情况下,在第i(1<=i<=n)个元素之前插入一个元素时,需将第n至第i(共n-i+1)个元素向后移动一个位置,平均移动n/2个元素。

最好时间复杂度O(1),最坏时间复杂度O(n)。

2、删除

void DeleteList(SeqList *L,int i)

{//从L所指的顺序表中删除第i个结点

if (i<1 || i> L->length){

printf("删除位置非法");

exit(0);

}

for (j=i;j<= L->length-1;j++)

L->data[j-1]= L->data[j];

L->length--;

}

一般情况下,删除第i(1<=i<=n)个元素时,需将第i+1至第n(共n-i)个元素向前移动一个位置,平均移动(n-1)/2个元素。

最好时间复杂度O(1),最坏时间复杂度O(n)。

习题:

1、在顺序表中插入一个元素需向后移动n-i+1个元素,平均移动

n/2个结点;

在顺序表中删除一个元素需向前移动n-i个元素,平均移动(n-1)/2个结点;

具体移动次数取决于顺序表长度n和插入删除位置i。

2、在元素ai之前插入新元素x

void InsertList(SeqList *L, DataType x, int i)

{ int j;

if (i<0||i>L->length)

{ printf(“插入位置非法“);

exit(0);

}

if (L->length>=ListSize)

{ printf(“表空间溢出,退出运行“);

exit(0);

}

for (j=L->length-1; j>=i; j--)

L->data[j+1]=L->data[j];

L->data[i]=x;

L->length++;

}

删除元素ai

void DeleteList (SeqList *L, int i) { int j;

if (i<0||i>length-1)

{ printf(“删除位置非法“);

exit(0);

}

for (j=i+1; jlength-1; j--)

L->data[j-1]=L->data[j];

L->length--;

}

1、void inverse_seqList(SeqList *A)

{ int i, j;

DataType t;

i=0;

j=A->length-1;

while (j>i)

{ t=A->data[i];

A->data[i]=A->data[j];

A->data[j]=t;

i++;

j--;

}

}

void inverse-seqList(SeqList *A)

{ int i;

DataType t;

for (i=0; ilength/2.0; i++)

{ t=A->data[i];

A->data[i]=A->data[A->length-1-i];

A->data[A->length-1-i]=t;

}

}

4、void insert(SeqList *L, int x)

{ int i;

if (L->length>=ListSize)

{ printf(“溢出错误\n”);

exit(0);

}

for(i=L->length-1; xdata[i]&&i>=0; i--)

L->data[i+1]=L->data[i];

L->data[i+1]=x;

L->length++;

}

数据结构期末考试复习笔记

判断: 1.线性表的链式存储结构优于顺序存储错误 2.单链表的每个节点都恰好包含一个指针域错误 3.线性表中的元素都可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因 此属于同一数据对象正确 4.在线性表的顺序存储结构中,逻辑上相邻的两个元素在屋里位置上并不一定紧邻。错 误 5.在线性表的数据结构中,插入和删除元素时,移动元素的个数和该元素的位置有关。正 确 6.顺序存储的线性表可以实现随机存取正确 7.栈一定是顺序存储的线性结构错误 8.一个栈的输入序列为A,B,C,D,可以得到输入序列为C,A,B,D 错误 9.队列是一种后进先出的线性表错误 10.树结构中每个节点最多只有一个直接前驱正确 11.二叉树的前序遍历中,任意一个节点均处于其子树节点的前面正确 12.在栈空的情况下,不能做出出栈操作,否则产生溢出正确 13.在前序遍历二叉树的序列中,任何节点的子树的所有节点都是直接跟在该节点之后正 确 填空: 1.在N个节点的顺序表中删除一个节点平均需要移动((N-1)/2)个节点,具体的移 动次数取决于(表长N和删除位置) 2.在单链表中除首节点外,任意节点的存储位置都由(直接前驱)节点中的指针指示 3.树中节点的最大层次称为树的(度) 4.由一颗二叉树的前序序列和(中)序列可唯一确定这棵二叉树 5.哈弗曼树的带权路径长度(最小)的二叉树 6.二插排序树任意节点的关键字值(大于)其左子树中各节点的关键字值(小于)其 右子树中的各节点关键字值 7.二分查找法,表中元素必须按(关键字有序)存放 选择: 1.用单链表方式存储的线性表,储存每个节点需要两个域,一个数据域,另一个是(B 指针域) 2.设A1,A2,A3为三个节点;P,10,,2代表地址,则如下的链表存储结构称为(B 单链表) 3.单链表的存储密度(C 小于1) 4.在线性表中(B 中间元素)只有一个直接前驱和一个直接后续 5.两个指针P和Q,分别指向单链表的两个元素P所指元素时Q所指元素前驱的条 件是(D P==Q) 6.在栈中存取数据的原则是(B 后进先出) 7.顺序栈判空的条件是(C top==-1) 8.串是一种特殊的线性表,其特殊性体现在(B 数据元素是一个字符) 9.求字符串T和字符串S中首次出现的位置的操作为(C 串的模式匹配) 10.深度为H的二叉树至多有(B 2H-1)个节点

专升本试题(数据结构)

(A )数据的逻辑结构 (B )数据的存储结构 《数据结构》专升本考试试题 (2015 年 3 月) (C )数据的逻辑结构和存储结构 12.算法分析的两个主要方面是( (A )空间复杂度和时间复杂度 (C )可读性和文档性 (D )数据的逻辑结构、存储结构及其基本操作 )o (B )正确性和简单性 (D )数据复杂性和程序复杂性 一、单项选择题(本大题共 20小题,每小题2分,共40分) 1 ?对于一个算法,当输入非法数据时,也要能作出相应的处理,这种要求称为( (A) 正确性 (B) 可行性 ( C) 健壮性 2 ?设S 为C 语言的语句,计算机执行下面算法时, for(i=n-1 ; i>=0 ; i--) for(j=0 ; jn ext==head (B ) p-> next==NULL (C ) p==NULL (D ) p==head 16. 一个栈的输入序列为: a ,b ,c ,d ,e ,则栈的不可能输出的序列是( )o (A ) a,b,c,d,e (B ) d,e,c,b,a (C ) d,c,e,a,b (D ) e,d,c,b,a 17.设SUBSTR(S,i,k)是求S 中从第i 个字符开始的连续k 个字符组成的子串的操作,则对 5 ?深度为k 的完全二叉树,其叶子结点必在第( (A ) k-1 (B ) k (C ) k-1 和 k (D ) 6?具有60个结点的二叉树,其叶子结点有12个, (A ) 11 ( B ) 13 (C ) 48 ( D 37 利于删除操作 利于随机访问 )层上。 1至k 则度为1的结点数为( 7.图的Depth-First Search(DFS) 遍历思想实际上是二叉树( (A )先序 (B )中序 (C )后序 (D )层序 8 .在下列链队列Q 中,元素a 出队的操作序列为( )遍历方法的推广。 S= ' Beijing&Nanjing ',SUBSTR(S,4,5)=( ) (A )‘iji ng ' (B )' jing& ' (C )' ingNa ' (D ) 'ing&N ' 18.广义表((a),a) 的表尾是( )o (A ) a (B ) (a) (C )() (D ) ((a)) 19. 在一棵具有5层的满二叉树中结点总数为( )o (A ) 31 (B ) 32 (C ) 33 (D ) 16 20. 如果从无向图的任一顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是( )o (A )完全图 (B )连通图 (C )有回路 (D ) —棵树 二、填空题(本大题共20个空,每空2分,共40分) Q (A ) (B ) (C ) (D ) p=Q.fr ont->n ext; p->n ext= Q.front->n ext; p=Q.fr ont->n ext; Q.front->n ext=p->n ext; p=Q.rear- >n ext; p->n ext= Q.rear- >n ext; p=Q->n ext; Q->n ext=p->n ext; 1 .逻辑结构决定了算法的 ____________ ,而存储结构决定了算法的 _____________ o 2. _______________________ 栈和队列都是一种 ______________________ 的线性表,栈 和删除只能在 ______________ 进行。 3. 线性表(a 1,a 2,…,a n )的顺序存储结构中,设每个单元的长度为L,元素a i 的存储地址LOC 4. 已知一双向链表如下(指针域名为next 和prior): 9. Huffman 树的带权路径长度WP 等于( (A )除根结点之外的所有结点权值之和 (C )各叶子结点的带权路径长度之和 )域存储后继结点的地址。 (C ) rchild (D ) root )o 10?线索二叉链表是利用( (A ) Ichild (B ) data 11 ?研究数据结构就是研究( (B ) (D ) ) 所有结点权值之和 根结点的值 现将p 所指的结点插入到x 和y 结点之间,其操作步骤为: ________________________ 5 . n 个结点无向完全图的的边数为 ________________________ , n 个结点的生成树的边 为 ____________________ o

郝斌数据结构自学笔记--知识点+程序源代码

郝斌数据结构自学笔记 --知识点+程序源代码 By-HZM 1_什么叫做数据结构 数据结构概述 定义 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法。 ~ 数据结构=个体的存储+个体的关系存储 算法=对存储数据的操作 2_衡量算法的标准 算法 解题的方法和步骤 ~ 衡量算法的标准 1)时间复杂度:大概程序执行的次数,而非执行的时间 2)空间复杂度:算法执行过程中大概所占用的最大内存 3)难易程度 4)健壮性 3_数据结构的特点 【 数据结构的地位 数据结构是软件中最核心的课程 程序=数据的存储+数据的操作+可以被计算机执行的语言 4_预备知识_指针_1 5_预备知识_指针_2 * 指针的重要性: 指针是C语言的灵魂 定义:

地址: 地址是内存单元的编号,从0开始的非负整数,范围:0-FFFFFFFF【0-4G-1】 CPU=====地址线,控制线,数据线=====内存 指针: … 指针就是地址,地址就是指针。 指针变量是存放内存单元地址的变量。 指针的本质是一个操作受限的非负整数。 分类: 1.基本类型的指针 2.指针和数组的关系 ? 变量并不一定连续分配,随机分配内存。 内存: 内存是多字节组成的线性一维存储空间。 内存的基本划分单位是字节。 每个字节含有8位,每一位存放1个0或1个1. 内存和编号是一一对应的。 ( 软件在运行前需要向操作系统申请存储空间。在软件运行期间,该软件所占空间不再分配给其他软件。当软件运行完毕后,操作系统将回收该内存空间(操作系统并不清空该内存空间中遗留下来的数据)。 NOTE:1)指针变量也是变量,普通变量前不能加*,常亮和表达式前不能加&。 2)局部变量只在本函数内部使用。 如何通过被调函数修改主调函数中普通变量的值。 1)实参为相关变量的地址; < 2)形参为以该变量的类型为类型的指针变量; 3)在被调函数中通过 *形参变量名的形式的形式就可以修改主函数。 CASE 1 #include<> int main(void) { |

山东07年专升本考试数据结构模拟试题.

山东:07年专升本考试数据结构模拟试题1 一、填空题:(每小题2分,共10分 1. 设有数据结构(D,R,其中 D 是数据元素的有限集,R 是的有限集。 2. 深度为 k 的二叉树其结点数至多有个。 3. 栈是一种特殊的线性表,它允许在表的一端进行操作。 4. 通常象交通、道路问题的数学模型是一种称为的数据结构。 5. 哈希表是一种查找表,可以根据哈希函数直接获得。 二、单项选择题:(每小题2分,共10分 对于下列各题,在备选答案中选出一个正确的,并将其编号填在“”位置上。 1. 若线性表最常用的操作是存取第 i 个元素及其前驱元素的值,则采用存储方式最节省运算时间。 A. 单链表 B. 双链表 C. 单循环链表 D. 顺序表 2. 下列排序算法中,算法在进行一趟相应的排序处理结束后不一定能选出一个元素放到其最终位置上。。 A. 直选择排序 B. 冒泡排序

C. 归并排序 D. 堆排序 3. 队列的操作原则是。 A. 先进后出 B. 先进先出 C. 只能进行插入 D. 只能进行删除 4. 在具有 n 个结点的二叉链表中,非空的链域个数为。 A. n-1 B. n C. n+1 D. 不确定 5. 对具有 n 个元素的有序查找表采用折半查找算法查找一个键值,其最坏比较次数的数量级为。 A. O(log2n B. O(n C. O(nlog2n D. O(n2 三、判断题:(每小题2分,共10分

判断下列各题是否正确,若正确,在题后的括号内填“T”,否则填“F”。 1. 在栈为空的情况下不能作出栈处理,否则,将产生下溢出。( 2. 如果有向图 G=(V, E 的拓扑序列唯一,则图中必定仅有一个顶点的入度为0、一个顶点的出度为0。( 3. 在大根堆中,必定满足每个结点的键值大于其左右子树中所有结点的键值。( 4. 在采用线性探测法处理冲突的散列表中所有同义词在表中相邻。( 5. 在索引顺序表中,对索引表既可采用顺序查找,也可采用二分查找。( 四、解答下列各题:(每题10分,共40分 1. 已知线性表 L 采用带头结点的的单向循环链表表示,试给出它的存储结构类型描述及相应的示意图。。 2. 已知一棵二叉树的先序、中序和后序序列如下所示,请填写各序列中空格处的结点,并画出该二叉树的二叉链表存储结构示意图。 先序序列是:_ B _ F _ I C E H _ G;中序序列是:D _ K F I A _ E J C _ ; 后序序列是:_ K _ F B H J _ G _ A 3. 已知数据表为(48,70,33,65,24,56,12,92,86,22,a 写出采用快速排序算法进行排序时第一趟快速划分的详细过程及结果;b 写出按基数排序思想对最低位进行一次分配和收集的结果。 4. 对图1所示的带权无向图,写出它的邻接矩阵和深度优先搜索序列,并按克鲁斯卡算法求其最小生成树(写出求解的详细过程示意图。 图1 带权无向图 五、算法设计题:(前两题必做,每题15分,共30分;第三题为附加题,选做,10分

数据结构复习笔记

数据结构复习笔记 作者: 网络转载发布日期: 无 数据就是指能够被计算机识别、存储和加工处理的信息的载体。 数据元素是数据的基本单位,有时一个数据元素可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。如整数这个集合中,10这个数就可称是一个数据元素.又比如在一个数据库(关系式数据库)中,一个记录可称为一个数据元素,而这个元素中的某一字段就是一个数据项。 数据结构的定义虽然没有标准,但是它包括以下三方面内容:逻辑结构、存储结构、和对数据的操作。这一段比较重要,我用自己的语言来说明一下,大家看看是不是这样。 比如一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多字段(数据项)组成。那么这张表的逻辑结构是怎么样的呢? 我们分析数据结构都是从结点(其实也就是元素、记录、顶点,虽然在各种情况下所用名字不同,但说的是同一个东东)之间的关系来分析的,对于这个表中的任一个记录(结点),它只有一个直接前趋,只有一个直接后继(前趋后继就是前相邻后相邻的意思),整个表只有一个开始结点和一个终端结点,那我们知道了这些关系就能明白这个表的逻辑结构了。 而存储结构则是指用计算机语言如何表示结点之间的这种关系。如上面的表,在计算机语言中描述为连续存放在一片内存单元中,还是随机的存放在内存中再用指针把它们链接在一起,这两种表示法就成为两种不同的存储结构。(注意,在本课程里,我们只在高级语言的层次上讨论存储结构。) 第三个概念就是对数据的运算,比如一张表格,我们需要进行查找,增加,修改,删除记录等工作,而怎么样才能进行这样的操作呢? 这也就是数据的运算,它不仅仅是加减乘除这些算术运算了,在数据结构中,这些运算常常涉及算法问题。 弄清了以上三个问题,就可以弄清数据结构这个概念。 -------------------------------------------------------------------------------- 通常我们就将数据的逻辑结构简称为数据结构,数据的逻辑结构分两大类:线性结构和非线性结构(这两个很容易理解) 数据的存储方法有四种:顺序存储方法、链接存储方法、索引存储方法和散列存储方法。-------------------------------------------------------------------------------- 下一个是难点问题,就是算法的描述和分析,主要是算法复杂度的分析方法及其运用。首先了解一下几个概念。一个是时间复杂度,一个是渐近时间复杂度。前者是某个算法的时间耗费,它是该算法所求解问题规模n的函数,而后者是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。 当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度,因此,在算法分析时,往往对两者不予区分,经常是将渐近时间复杂度T(n)=O(f(n)简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。 此外,算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。但是我们总是考虑在最坏的情况下的时间复杂度。以保证算法的运行时间不会比它更长。 常见的时间复杂度,按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、k次方阶O(n^k)、指数阶O(2^n)。 时间复杂度的分析计算请看书本上的例子,然后我们通过做练习加以领会和巩固。 数据结构习题一 --------------------------------------------------------------------------------

数据结构专升本模拟题及答案

作业题(一) 一、单项选择题 1. 从逻辑上可以把数据结构分为()两大类。 A.动态结构、静态结构B.顺序结构、链式结构 C.线性结构、非线性结构D.初等结构、构造型结构 2. 链表不具有的特点是() A.插入、删除不需要移动元素B.可随机访问任一元素 C.不必事先估计存储空间D.所需空间与线性长度成正比 3.下面程序段的时间复杂度的量级为()。 For(i=1;i<=n;i++) For(j=1;j<=I;j++) For(k=1;k<=j;k++) X=x+1; A.O(1) B.O(n) C.O(n2) D.O(n3) 4.在一个带头结点的双向循环链表中,若要在p所指向的结点之前插入一个新结点,则需要相继修改()个指针域的值。 A.2 B.3 C.4 D.6 5、一个顺序存储线性表的第一个元素的存储地址是90,每个元素的长度是2,则第6个元素的存储地址是()。 A.98 B.100 C.102 D.106 6、判定一个栈s(最多元素为m0)为空的条件是()。 A.s-〉top! =0 B.s-〉top= =0 C.s-〉top! =m0 D.s-〉top= =m0 7、循环队列用数组A[m](下标从0到m-1)存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是()。 A.(rear-front+m)%m B.rear-front+1 C.rear-front-1 D.rear-front 8、设有两个串S1与S2,求串S2在S1中首次出现位置的运算称作()。 A.连接B.求子串 C.模式匹配D.判子串 9、设串S1='ABCDEFG',S2='PQRST',函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串S的的从序号i的字符开始的j个字符组成的子串,len(s)返回串S的长度,则con(subs(S1,2,len(S2)),subs(S1,len(S2),2))的结果是()。

数据结构学习总结

数据结构学习总结 经过一学期的学习,我对数据结构有了我自己的认识。一开始,我以为它和C语言和C++一样,都是讲一门语言。但学习之后,发现事实并不是这样,在数据结构的学习中,有线性表,有队,有栈,有树,有图等等。这些看起来没有关系,其实之间有着千丝万缕的联系。线性表是其中最简单的,所以在前几章学习,后面依次逐章变难,学起来也很吃力。 《数据结构与算法》以基本数据结构和算法设计策略为知识单元,系统地介绍了数据结构的知识与应用、计算机算法的设计与分析方法,主要内容包括线性表、树、图和广义表、算法设计策略以及查找与排序算法等。 线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。线性表具有如下的结构特点:均匀性:虽然不同数据表的数据元素可以是各种各样的,但对于同一线性表的各数据元素必定具有相同的数据类型和长度。有序性:各数据元素在线性表中的位置只取决于它们的序号,数据元素之前的相对位置是线性的,即存在唯一的“第一个“和“最后一个”的数据元素,除了第一个和最后一个外,其它元素前面均只有一个数据元素直接前驱和后面均只有一个数据元素(直接后继)。在实现线性表数据元素的存储方面,一般可用顺序存储结构和链式存储结构两种方法。链式存储结构将在本网站线性链表中介绍,本章主要介绍用数组实现线性表数据元素的顺序存储及其应用。另外栈、队列和串也是线性表的特殊情况,又称为受限的线性结构。 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生

专升本试题数据结构

《数据结构》专升本考试试题 (2015年3月) 一、单项选择题(本大题共20小题,每小题2分,共40分) 1.对于一个算法,当输入非法数据时,也要能作出相应的处理,这种要求称为( )。 (A) 正确性 (B) 可行性 (C) 健壮性 (D) 输入性 2.设S为C语言的语句,计算机执行下面算法时,算法的时间复杂度为( )。 for(i=n-1;i>=0;i--) for(j=0;jnext; p->next= Q、front->next; (B)p=Q、front->next; Q、front->next=p->next; (C)p=Q、rear->next; p->next= Q、rear->next; (D)p=Q->next; Q->next=p->next; 9. Huffman树的带权路径长度WPL等于( ) (A)除根结点之外的所有结点权值之与 (B)所有结点权值之与 (C)各叶子结点的带权路径长度之与 (D)根结点的值 10.线索二叉链表就是利用( )域存储后继结点的地址。 (A)lchild (B)data (C)rchild (D)root 11.研究数据结构就就是研究( )。(A) 数据的逻辑结构 (B) 数据的存储结构 (C) 数据的逻辑结构与存储结构 (D) 数据的逻辑结构、存储结构及其基本操作 12.算法分析的两个主要方面就是( )。 (A)空间复杂度与时间复杂度 (B)正确性与简单性 (C)可读性与文档性 (D)数据复杂性与程序复杂性 13.若一个线性表中最常用的操作就是取第i个元素与找第i个元素的前趋元素,则采用( )存储方式最节省时间。 (A)顺序表 (B)单链表 (C)双链表 (D)单循环链表 14.在一个长度为n的顺序表中,在第i个元素之前插入一个新元素时,需向后移动( )个元素。 (A) n-i (B) n-i+1 (C)n-i-1 (D)i 15.非空的循环单链表head的尾结点p满足( )。 (A) p->next==head (B) p->next==NULL (C) p==NULL (D)p==head 16.一个栈的输入序列为:a,b,c,d,e,则栈的不可能输出的序列就是( )。 (A)a,b,c,d,e (B)d,e,c,b,a (C)d,c,e,a,b (D)e,d,c,b,a 17.设SUBSTR(S,i,k)就是求S中从第i个字符开始的连续k个字符组成的子串的操作,则对于S=‘Beijing&Nanjing’,SUBSTR(S,4,5)=( )。 (A)‘ijing’ (B)‘jing&’(C)‘ingNa’(D)‘ing&N’ 18.广义表((a),a)的表尾就是( )。 (A) a (B) (a) (C) () (D)((a)) 19.在一棵具有5层的满二叉树中结点总数为( )。 (A)31 (B)32 (C)33 (D)16 20.如果从无向图的任一顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定就是( )。 (A)完全图(B)连通图(C)有回路(D)一棵树 二、填空题(本大题共20个空,每空2分,共40分) 1.逻辑结构决定了算法的 ,而存储结构决定了算法的。 2.栈与队列都就是一种的线性表,栈的插入与删除只能在进行。 3.线性表(a 1 ,a 2 ,…,a n )的顺序存储结构中,设每个单元的长度为L,元素a i的存储地址LOC(a i)为 4.已知一双向链表如下(指针域名为next与prior): 现将p所指的结点插入到x与y结点之间,其操作步骤为: ; ; ; ; 5.n个结点无向完全图的的边数为, n个结点的生成树的边数为。

专升本《数据结构》_试卷_答案

专升本《数据结构》 一、(共75题,共150分) 1. 数据的基本单位是()。(2分) A.数据元素 B.记录 C.数据对象 D.数据项 .标准答案:A 2. ()是数据的不可分割的最小单位。(2分) A.数据对象 B.数据元素 C.数据类型 D.数据项 .标准答案:D 3. 算法的空间复杂度是对算法()的度量。(2分) A.时间效率 B.空间效率 C.可读性 D.健壮性 .标准答案:B 4. ()是限制了数据元素的内部结构仅为一个字符的线性表。(2分) A.栈 B.队列 C.串 D.数组 .标准答案:B 5. 串的长度是指串中所含()的个数。(2分) A.不同字符 B.不同字母 C.相同字符 D.所有字符 .标准答案:D 6. 采用带头结点双向链表存储的线性表,在删除一个元素时,需要修改指针()次。(2分) A.1 B.2 C.3 D.4 .标准答案:B 7. 线性表的顺序存储结构是一种()的存储结构。(2分) A.顺序存取 B.随机存取 C.索引存取 D.Hash存取 .标准答案:B 8. 数组a[1..m]采用顺序存储,a[1]和a[m]地址分别为1024和1150,每个元素占2字节,则m是()。(2分) A.64 B.32 C.16 D.8 .标准答案:A 9. 深度为h的二叉树,第h层最多有()个结点。(2分) A.h B.2h-1 C.2h-1 D.2h .标准答案:C 10. m个结点的二叉树,其对应的二叉链表共有()个非空链域。(2分) A.m B.m+1 C.2m D.m-1 .标准答案:B 11. 下面叙述错误的是()。(2分) A.顺序表是借助物理单元相邻表示数据元素之间的逻辑关系 B.对于空队列进行出队操作过程中发生下溢现象 C.有向图的邻接矩阵一定是对称的 D.具有相同的叶子个数和具有相同的叶子权值的赫夫曼树不是唯一的 .标准答案:C 12. 以下与数据的存储结构无关的术语是()。(2分) A.循环队列 B.双向链表 C.哈希表 D.数组 .标准答案:D 13. 在一个长度为n的链式栈中出栈实现算法的时间复杂度为()。(2分) A.O(1) B.O(log n) C.O(n) D.O(n2) .标准答案:A 14. 在具有k个度数为2的二叉树中,必有()个叶子结点。(2分) A.k B.k-1 C.2k D.k+1 .标准答案:D 15. 在关键字序列(10,20,30,40,50)中,采用折半法查找20,关键字之间比较需要()次。(2分) A.1 B.2 C.3 D.4 .标准答案:C 16. 16某二叉树的后序遍历序列和和中序遍历序列均为abcd,该二叉树的前序遍历序列是()。(2分) A.abcd B.dcba C.acbd D.dbca .标准答案:B 17. n个顶点的无向连通图的生成树,至少有()个边。(2分) A.n(n-1) B.n(n-1)/2 C.2n D.n-1 .标准答案:D 18. 可以采用()这种数据结构,实现二叉树的层次遍历运算。(2分) A.队列 B.树 C.栈 D.集合 .标准答案:A

专升本考试试题分析包括英语高数数据结构考试原题

第一章英语;英语整体上看试卷一共分为六道大题,一是单项选择题;试题分析;一单项选择:20’;ishelpfulinlookingforajo;A.certificateB.grad eC.re;A.senseB.savingC.imforma;A.momentB.pointC.heartD.;4.Mymebysa yingthatIcould;A.discou 第一章英语 英语整体上看试卷一共分为六道大题,一是单项选择题共计20道20分;二是完型填空10道10分;三是阅读,分三个篇章,每个篇章5道选择,各2分,总计30分;四是用词的适当形式填空,10道10分;五是翻译(汉译英),5道2 0分;六是写作10分;总计100分。 试题分析 一单项选择:20’ is helpful in looking for a job,but it doesn’t mean a job. A.certificate B.grade C.record D.debt A.sense B.saving C.imformation https://www.360docs.net/doc/327545249.html,fort A.moment B.point C.heart D.face 4.My me by saying that I could win in the speech contest ,so I to ok part in it. A.discouraged B.encouraged C.courage D.asked 5.His new book to the top as the bestseller.

A.rocketed B.raised C.stayed D.reached 6.The president was invited to address the audience at the openin g Of the Olympic Games. A.ceremony B.speech C.meeting D.celebration 7.In some western is that blank cats will bring misforture to peo ple. A.superstar B.superpower C.superstitious D.superstition 8.The the cup from the table with any guest’s knowledge . A.reminded B.reduced C.refused D.removed A.looks B.sets C.symbolizes D.Seeks 10.Although we are of the same age,we height and weight. 11.Some soldiers are very his orders strictly. A.loyalty B.loyal C.faithfulness D.faith (损坏). A.What B.whatever C.who D.whoever 13.All of those the peace conference were asked to sign their nam es on piece of cloth. A.attended B.preseted C.went D. was

专升本《数据结构》模拟题试卷

专升本《数据结构》模拟题试卷 一. (共75题,共150分) 1. 数据的基本单位是()。(2分) A.数据元素 B.记录 C.数据对象 D.数据项 ★检查答案标准答案:A 2. ()是数据的不可分割的最小单位。(2分) A.数据对象 B.数据元素 C.数据类型 D.数据项 ★检查答案标准答案:D 3. 算法的空间复杂度是对算法()的度量。(2分) A.时间效率 B.空间效率 C.可读性 D.健壮性 ★检查答案标准答案:B 4. ()是限制了数据元素的内部结构仅为一个字符的线性表。(2分) A.栈 B.队列 C.串 D.数组 ★检查答案标准答案:B 5. 串的长度是指串中所含()的个数。(2分) A.不同字符 B.不同字母 C.相同字符 D.所有字符 ★检查答案标准答案:D 6. 采用带头结点双向链表存储的线性表,在删除一个元素时,需要修改指针()次。(2

分) A.1 B.2 C.3 D.4 ★检查答案标准答案:B 7. 线性表的顺序存储结构是一种()的存储结构。(2分) A.顺序存取 B.随机存取 C.索引存取 D.Hash存取 ★检查答案标准答案:B 8. 数组a[1..m]采用顺序存储,a[1]和a[m]地址分别为1024和1150,每个元素占2字节,则m是()。(2分) A.64 B.32 C.16 D.8 ★检查答案标准答案:A 9. 深度为h的二叉树,第h层最多有()个结点。(2分) A.h B.2h-1 C.2h-1 D.2h ★检查答案标准答案:C 10. m个结点的二叉树,其对应的二叉链表共有()个非空链域。(2分) A.m B.m+1 C.2m D.m-1 ★检查答案标准答案:B 11. 下面叙述错误的是()。(2分) A.顺序表是借助物理单元相邻表示数据元素之间的逻辑关系 B.对于空队列进行出队操作过程中发生下溢现象

数据结构复习笔记

第一章概论 1.数据:信息的载体,能被计算机识别、存储和加工处理。 2.数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。 3.数据结构:数据之间的相互关系,即数据的组织形式。 它包括:1)数据的逻辑结构,从逻辑关系上描述数据,与数据存储无关,独立于计算机; 2)数据的存储结构,是逻辑结构用计算机语言的实现,依赖于计算机语言。 3)数据的运算,定义在逻辑结构上,每种逻辑结构都有一个运算集合。常用的运算:检索/插入/删除/更新/排序。 4.数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。数据的存储结构是逻辑结构用计算机语言的实现。 5.数据类型:一个值的集合及在值上定义的一组操作的总称。分为:原子类型和结构类型。 6.抽象数据类型:抽象数据的组织和与之相关的操作。优点:将数据和操作封装在一起实现了信息隐藏。 7. 抽象数据类型ADT:是在概念层上描述问题;类:是在实现层上描述问题;在应用层上操作对象(类的实例)解决问题。 8.数据的逻辑结构,简称为数据结构,有: (1)线性结构,若结构是非空集则仅有一个开始和终端结点,并且所有结点最多只有一个直接前趋和后继。 (2)非线性结构,一个结点可能有多个直接前趋和后继。 9.数据的存储结构有: 1)顺序存储,把逻辑相邻的结点存储在物理上相邻的存储单元内。 2)链接存储,结点间的逻辑关系由附加指针字段表示。 3)索引存储,存储结点信息的同时,建立附加索引表,有稠密索引和稀疏索引。 4)散列存储,按结点的关键字直接计算出存储地址。 10.评价算法的好坏是:算法是正确的;执行算法所耗的时间;执行算法的存储空间(辅助存储空间);易于理解、编码、调试。

【良心出品】2013韩山师范学院专升本插班生考试《数据结构》课程试卷

韩山师范学院2013年专升本插班生考试试卷 计算机科学与技术 专业 数据结构 试卷 (A 卷) 一、 单项选择题(每题2分,共40分) 1、从逻辑上可以把数据结构分为( A )两大类。 A .动态结构、静态结构 B .顺序结构、链式结构 C .线性结构、非线性结构 D .初等结构、构造型结构 2、下面关于算法说法错误的是( D ) A .算法最终必须由计算机程序实现 B .为解决某问题的算法同为该问题编写的程序含义是相同的 C . 算法的可行性是指指令不能有二义性 D .以上几个都是错误的 3、栈和队列的共同特点是( A )。 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 4、以下数据结构中,哪一个是线性结构( D )? A .广义表 B. 二叉树 C. 稀疏矩阵 D. 串

5、下面关于线性表的叙述中,错误的是哪一个?(B) A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 6、静态链表中指针表示的是(B)。 A.内存地址B.数组下标 C.表头地址 D.下一元素地址//所谓静态链表就是没有指针的,用下标模仿这个指针的功能的 7、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( A )存储方式最节省时间。 A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表 8、下列各种排序算法中平均时间复杂度为O(n2)是(D)。 A.快速排序 B. 堆排序 C. 归并排序 D. 冒泡排序 9、设散列表中有m个存储单元,散列函数H(key)= key % p,则p最好选择 (B)。 A. 小于等于m的最大奇数 B. 小于等于m的最大素数 C. 小于等于m的最大偶数 D. 小于等于m的最大合数 10、字符串的长度是指(C)。 A. 串中不同字符的个数 B. 串中不同字母的个数 C. 串中所含字符的个数 D. 串中不同数字的个数 11、设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列为 ( D )。 A. top=top+1; B. top=top-1; C. top->next=top; D. top=top->next; 12、二叉排序树可以得到一个从小到大的有序序列。( B ) A. 先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历

面经笔记数据结构

数据结构及算法知识 1.字典树构造及其优化与应用 字典树的核心就是空间换时间,利用字符串的公共前缀来避免无谓的字符串比较,降低查询时间 性质: - 根结点不包含字符,除了根结点每个结点都包含一个字符 - 从根结点到某一结点的路径经过的字符连接起来就是该结点对于的字符串 - 查询和建树可以同时进行 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。 思路:首先要求得每个词的频率,1G无法放入内存,需要分成多个小文件,对每个小文件的词进行统计 (1)散列分治:顺序读取文件,对每个词,可以hash(x)P00(只要不小于1024个文件,是为了保证每个小文件可以放入内存),这样被映射为5000个小文件,每个文件大概200K,每个文件最少1250个单词 (2)对于每个小文件,利用hash_map/字典树记录每个单词出现的频率,(3)用100个元素的最小堆,选出每个文件中的频率最大的100个单词 (4)对这5000个小文件进行归并排序,选出最大的100个。 2.大规模文本文件,全是单词,求前10词频的单词(Top k问题是热门问题)

3.如何判断时间,空间复杂度是否为O(logn) 最直观的判断就是程序中采用了二分,且二分后只运算数据的一半。但如果两部分都运算的话,时间复杂度就是O(nlogn)了。其实不一定是二分,只不过二分比较常用罢了 4.各个算法的时间和空间复杂度 5.M个有序链表取前k大个元素

6.红黑树的调整 红黑树是一种近似平衡的二叉查找树,它能够确保任何一个节点的左右子树的高度差不会超过二者中较低那个的一倍 1.每个节点要么是红色,要么是黑色。 2.根节点必须是黑色 3.红色节点不能连续(也即是,红色节点的孩子和父亲都不能是红色)。 4.对于每个节点,从该点至null(树尾端)的任何路径,都含有相同个数的黑色节点。 在树的结构发生改变时(插入或者删除操作),往往会破坏上述条件3或条件4,需要通过调整使得查找树重新满足红黑树的条件。 调整可以分为两类:一类是颜色调整,即改变某个节点的颜色;另一类是结构调整,即改变检索树的结构关系。结构调整过程包含两个基本操作:左旋(Rotate Left),右旋(RotateRight)。

(年)专升本十套数据结构(试题及标准答案)

数据结构试卷(一) 一、单选题(每题2 分,共20分) 1.栈和队列的共同特点是( )。 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 2.用链接方式存储的队列,在进行插入运算时( ). A. 仅修改头指针 B. 头、尾指针都要修改 C. 仅修改尾指针 D.头、尾指针可能都要修改 3.以下数据结构中哪一个是非线性结构?( ) A. 队列 B. 栈 C. 线性表 D. 二叉树 4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在 676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。 A.688 B.678 C.692 D.696 5.树最适合用来表示( )。 A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据 6.二叉树的第k层的结点数最多为( ). A.2k-1 B.2K+1 C.2K-1 D. 2k-1 7.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二 分查找,则查找A[3]的比较序列的下标依次为( ) A. 1,2,3 B. 9,5,2,3 C. 9,5,3 D. 9,4,2,3 8.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为 A. O(1) B. O(n) C. O(1og2n) D. O(n2) 9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K) =K %9作为散列函数,则散列地址为1的元素有()个, A.1 B.2 C.3 D.4 10.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。 A.5 B.6 C.7 D.8 二、填空题(每空1分,共26分) 1.通常从四个方面评价算法的质量:_________、_________、_________和_________。 2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。 3.假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数 为__________个,树的深度为___________,树的度为_________。 4.后缀算式9 2 3 +- 10 2 / -的值为__________。中缀算式(3+4X)-2Y/3对应的后缀算式 为_______________________________。 5.若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指 针。在这种存储结构中,n个结点的二叉树共有________个指针域,其中有________个指针域是存放了地址,有________________个指针是空指针。 6.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点 分别有_______个和________个。 7.AOV网是一种___________________的图。 8.在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有 向完全图中,包含有________条边。 9.假定一个线性表为(12,23,74,55,63,40),若按Key % 4条件进行划分,使得同一余数的元 素成为一个子表,则得到的四个子表分别为____________________________、___________________、_______________________和__________________________。

相关文档
最新文档