当前位置:文档之家› 《数据结构》模拟练习

《数据结构》模拟练习

《数据结构》模拟练习
《数据结构》模拟练习

一、单项选择题(从每小题的四个备选答案中选出一个正确答案,并将其号码填在题干的括号内,每小题1分,共30分)

1.数据的逻辑关系是指数据元素的【1】

①关联②结构

③存储方式④数据项

2.在下列数据基本逻辑结构中,数据元素之间关系最弱的是【4 】

①线性结构②树形结构

③图状结构④集合

3.算法能正确地实现预定功能的特性称为算法的【1 】

①正确性②易读性

③健壮性④高效率

4.一般情况下,若事先不知道线性表的长度,则处理线性表时较好的存储结构是【1】

①单链表②静态链表

③顺序表④②和③

5.线性表L=(a1,a2,……,a n)中,a i+1称为a i的【1】

①直接后继②直接前驱

③孩子④兄弟

6.线性表的顺序存储结构中,一般情况下,删除第i(0≤i

①n-i+1 ②n-i-1

③i ④i+1

7.经过栈的运算序列InitStack(s);Push(s,a);Push(s,b);Pop(s);后,StackTop(s)的值是【3】

①1 ②2

③a④b

8.循环队列Sq为空队列的条件是【4】

①Sq->read==0 ②Sq->front==0

③(Sq->read+1)%maxsize==Sq->front ④Sq->read==Sq->front

9.链栈Ls为空栈的条件是【2 】

①Ls==null ②Ls->next==null

③Ls==0 ④Ls->next==Ls

10.长度为零的串是【2】

①空格串②空串

③只含一个空格的串④不存在的

11.设有串s1=”abcdefg”和s2=”cd”,则s2在s1中的位置是【3】

①1 ②2

③3 ④4

12.数组占用的存储空间【4】

①可以连续②可以不连续

③不能连续④必须连续

13.二维数组arr[4][4]存放的起始地址loc[0][0]=1000,元素的长度为2,则loc[2][2]等于【4】

①1000 ②1004

③1008 ④1020

14.n维稀疏矩阵的三元组的列数为【 3 】

①1 ②2

③3④n

15.在稀疏矩阵Anxn的十字链表表示中,表头结点的个数是【 4 】

①n ②n+1

③2n ④2n+1

16.高度为h的完全二叉树结点数最多有【 1 】

①2h-1②2h+1

③2h-1 ④2h+1

17.若以顺序表示存储二叉树,且每个结点占用1个存储单元,则深度为k的单枝二叉树浪费的存储单元个数为【 1 】

①2k-k-1②2k-1-k-1

③2k-k+1 ④2k-1-k+1

18.后序遍历a,b,c序列所对应的不同二叉树的最大个数为【 2 】

①4 ②5

③6 ④7

19.在有向图的邻接表中,顶点v i在表结点中出现的次数是【 3 】

①顶点v i的度②顶点v i的出度

③顶点v i的入度④依附于顶点v i的边数

20.关键路径是【 3 】

①源点到汇点的路径中,边数最多的路径

②源点到汇点的路径中,边数最少的路径

③源点到汇点的路径中,路径长度最长的路径

④源点到汇点的路径中,路径长度最短的路径

21.设图的顶点数为n、边数为e,若用邻接表表示图,则深度优先搜索遍历算法的时间复杂度是【 4 】

①O(n2) ②O(n)

③O(e) ④O(n+e)

22.在有向图的邻接表中,顶点v i的入度是【 3 】

①依附于v i的弧数②v i链表中的表结点数

③v i在表结点中出现的次数④v i度的一半

23.稳定的排序方法是指在排序过程中,关键字值相等的不同记录之间的相对位置【 1 】

①保持不变②保持相反

③不定④无关

24.内部排序是指在整个排序过程中,参与排序的全部数据均存放在计算机的【 1 】

①内存储器中②外存储器中

③内存储器和外存储器中④寄存器中

25.一组记录的关键码为(46,79,56,38,40,84),则使用快速排序法以第一个记录为基准得到的第一次划分结果为【 3 】

①38,40,46,56,79,84 ②40,38,46,79,56,84

③40,38,46,56,79,84④40,38,46,84,56,79

26.采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为【 3 】

①n ②n/2

③(n+1)/2④(n-1)/2

27.按二分查找法对一个长度为12的有序表进行查找,在表内各元素等概率的情况下查找成功所需要的平均比较次数为【 2 】

①35/12 ②37/12

③39/12 ④43/12

28.在各种查找方法中,平均查找长度与结点个数n无关的查找方法是【 3 】

①顺序查找法②二分查找法

③哈希表查找法④不存在的

29.倒排文件的主要优点是【 3 】

①便于进行插入和删除操作②便于进行文件的合并

③能提高关键字的查找速度④能节省存储空间

30.索引无序文件指的是【 1 】

①主文件无序,索引表有序②主文件有序,索引表无序

二、填空题(每空2分,共10分)

1.算法InsertList的功能是将值为x的新结点插入到带头结点的单链表head的第i个结点位置上,请选择填空完成算法。

typedef char DataType;

typedef struct node

{ DataType data;

struct node *next;

}ListNode;

typedef ListNode *LinkList;

void InsertList(【 1 】 head,DataType x,int i) 【 1 】③

{ ListNode *p,*s;

p=GetNode(head,i-1); //GetNode返回第i-1个结点的位置

if(p==NULL)

Error(“position error”);

s=(ListNode *)malloc(【 2 】); 【 2 】⑤ s->data=x;

s->next=【 3 】; 【 3 】⑥ p->next=s;

}

备选答案:①s->next ②LinkList * ③ListNode *

④s->data ⑤sizeof(ListNode) ⑥p->next

2.算法TreeOrder的功能是实现二叉树的中序(根)遍历,请填空完成算法。

typedef char DataType;

typedef struct node

{ DataType data;

struct node *lchild,*rchild;

}BitTNode;

typedef BinTNode *BinTree;

void TreeOrder(BinTree t)

{ if(t)

{ TreeOrder(【 4 】); 【 4 】⑩

printf(t->data);

TreeOrder(【 5 】); 【 5 】⑦}

}

备选答案:⑦t->rchild ⑧BinTree t ⑨t->data ⑩t->lchild

三、简答题(本大题共5小题,每小题5分,共25分)

1.在对线性表的处理中一般使用两种存储结构,顺序存储结构和链式存储结构。试叙述在什么情况下使用顺序表比链表好?

答:①顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。

优点:存储密度大,存储空间利用率高。缺点:插入或删除元素时不方便。

②链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点

值,另一部分存放表示结点间关系的指针

优点:插入或删除元素时很方便,使用灵活。缺点:存储密度小(<1),存储空间利用率低。

顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作。

若线性表的长度变化不大,且其主要操作是查找,则采用顺序表;

若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。

2.简述栈的特点以及栈与一般线性表的区别。

答:栈是限定仅在表尾进行插入或删除操作的线性表。栈也叫后进先出表。一般的线性表可以在线性表的任何位臵进行插入和删除操作。

3.在具有n(n>1)个结点的各棵树中,其中深度最小的那棵树的深度是多少?它共有多少叶子和非叶子结点?

答:深度最小的那棵树的深度为2。对于这n个结点,除了一个根结点之外,其余得n-1个结点均为叶子结点,故其深度为2。该树叶子结点数为n-1,非叶子结点数为1。

4.简述什么是稳定的排序,什么是不稳定的排序。

答:在排序序列中,任何两个相等的关键字K i=K j,如果在排序前的序列中K i领先于K j,若在排序后的序列中K i仍领先于K j,则称所用的排序方法是稳定的;反之,若可能使排序后的序列中K j领先于K i,则称所用的排序方法是不稳定的。

5.常见的文件组织方式有哪几种?各有何特点?

答:常用的文件组织方式有:顺序文件、索引文件、散列文件和多关键字文件。

●顺序文件的特点是,它是按记录进入文件的先后顺序存放,其逻辑结构和物理顺序是一致的。

●索引文件的特点是,在主文件之外还另外建立了一张表,由这张表来指明逻辑记录和物理记录之间的一一对应关系。索引文件在存储器上分为两个区:索引区和数据区,前者存放索引表,后者存放主文件。

●散列文件是利用散列存储方式组织的,它类似于散列表,即根据文件中关键字的特点,设计一个散列函数和处理冲突的方法,将记录散列到存储设备上,对于散列文件,磁盘上的文件记录通常是成组存放的。

●多关键字文件则包含有多个次关键索引的,不同于前述几种文件只含有一个主关键字。

四、分析计算题(本大题共5小题,每小题5分,共25分)

1.下述算法的功能是什么?

LinkList Demo(LinkList L)

{ // L 是无头结点单链表

ListNode *Q,*P;

if(L&&L->next){

Q=L;

L=L->next;

P=L;

while (P->next) P=P->next;

P->next=Q; Q->next=NULL;

}

return L;

}//

该算法的功能是:将开始结点摘下链接到终端结点之后成为新的终端结点,而原来的第二个结点成为新的开始结点,返回新链表的头指针。

2.设有对堆栈Stack 操作的算法:StackEmpty (判断栈空)、Push (压栈)、Pop (出栈),请仔细阅读下面算法,指出其功能。

SF2(Stack)

{ int j, n=0, a[100];

while(!StackEmpty(Stack))

{ n++;

Pop(Stack, a[n]);

}

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

Push(Stack,a[j]);

}

该算法的功能是:利用数组完成将一个栈中的元素倒臵。

3.设有稀疏矩阵A 如图所示,请给出其三元组表示(行、列号均从1开始计数)。

????????????????????--=000280000000910000000060000003130150220015A

答:

4.针对下图,请画出使用Prim 算法构造最小生成树的过程。

解:该生成树生成的过程如下:

5.线性表的关键字集合为{87,25,310,8,27,132,68,95,187,123,70,63,47},已知哈希函数为H(k)=k%13,采用拉链法处理冲突,请设计出(画出)其链表结构。

解:87 %13=9 25 %13=12 310%13=11

8 %13=8 27 %13=1 132%13=2

68 %13=3 95 %13=4 187%13=5

123 %13=6 70 %13=5 63%13=11

47 %13=8

五、算法设计题(本题共10分)

试编写算法,用二分查找法在顺序表L中查找关键字key。

int binsearch(sqlist L,int key,n)

{

int i,M,low=1,high=n,find=0;

/*low和high分别表示查找范围的起始单元下标和终止单元下标,find为查找成功的标志变量*/

while (low<=high && !find)

{

m=(low+high)/2;

if(key

high=m-1;

else if (key>L[m].key)

low=m+1;

else

{

i=m;

find=1;

}

}

if (!find)

i=0;

return(i);

}

一、单项选择题(从每小题的四个备选答案中选出一个正确答案,并将其号码填在题干的括号内,每小题1分,共30分)

1.每个存储结点不仅含有一个数据元素,还包含一组指针,这种存储方式是【 2 】

①顺序存储方式②链式存储方式

③索引存储方式④散列存储方式

2.每个存储结点只含有一个数据元素,各结点存放在连续的存储空间,使用另外一个表指明结点的存储位置,这种存储方式是【 3 】

①顺序存储方式②链式存储方式

③索引存储方式④散列存储方式

3.算法在发生非法操作时能作出有效处理的特性称为算法的【 3 】

①正确性②易读性

③健壮性④高效率

4.设L是线性表且Length(L)的值是5,经过运算Delete(L,2)后,Length(L)= 【 2 】

①5 ②4

③6 ④0

5.线性表中,只有直接前驱而无后继的元素是【 1 】

①尾元素②首元素

③所有中间的元素④全部元素

6.设有两个指针p和q分别指向单链表的两个元素,则p所指向的元素是q所指向的元素的前导的条件是【 4 】

①p->next==q->next ②q->next=p

③p==q ④p->next=q

7.栈是一种特殊的线性表,其插入和删除操作被限定在【 3 】

①两端点②栈底

③栈顶④中间

8.循环队列Sq是满队列的条件是【 2 】

①Sq->read==Sq->front ②Sq->count==quenesize

③Sq->read==0 ④Sq->front==0

9.对于链队Lq,【 4 】

①存在着队列满的情况②不存在队列空的情况

③元素进队之前必须先判断队列满否④元素出队列之前必须先判断队列空否10.长度为零的串是【 2 】

①空格串②空串

③只含一个空格的串④不存在的

11.设有串s1=”This is a test”和s2=”is”,则s2在s1中的位置是【 1 】

①3 ②6

③2 ④4

12.稀疏矩阵中有n个非零元素,则其对应的三元组行数为【 4 】

①∞②n-1

③n+1 ④n

13.n阶三角矩阵的上三角元素值相等,在进行压缩存储时存放该值的数组元素下标为

【 1 】

①n*(n+1)/2+1 ②n*(n+1)/2-1

③n*(n+1)/2 ④n*(n+1)

14.二叉树的基本形态种数为【 3 】

①3 ②4

③5 ④6

15.3个结点可以构成不同形状树的种类为【 2 】

①1 ②2

③3 ④4

16.二叉树第k层上最多有结点个数为【 3 】

①2k②2k-1

③2k-1④k2

17.在具有n个结点的完全二叉树中,结点k(2k+1>n)的右孩子结点是【 4 】

①2k ②2k+1

③2k-1 ④不存在的

18.在下列算法中,用以生成最短路径的算法是【 3 】

①普里姆算法②卡尔算法

③迪杰斯特拉算法④哈夫曼算法

19.无向图中顶点v的度是一个数值,该数值关联于顶点v的【 1 】

①边②顶点

③序号④下标

20.在具有e条边的无向图的邻接矩阵存储法中,链表中结点的个数为【 2 】

①e ②2e

③e/2 ④e*e

21.有拓扑排序的图,一定是【 4 】

①有圈图②无圈图

③无向图④强连通图

22.不稳定的排序方法是指在排序过程中,关键字值相等的不同记录间的前后相对位置

【 3 】

①保持不变②保持相反

③不定④无关

23.用堆排序的方法对n个数据进行排序,首先从堆的根选出最大(或最小)的元素移动到位置【 4 】

①1 ②2

③n-1 ④n

24.归并排序的方法要求被排序的数据的存储方式必须是【 1 】

①顺序②链表

③顺序或链表④二叉树

25.动态查找表的全部运算是【 4 】

①建表、查找和读表元②插入和删除

③初始化④①②③

26.索引顺序表是一种按索引存储方式构造的一种【 4 】

①索引表②有序表

③树表④顺序表

27.平衡二叉树的各结点左右子树深度之差不能为【 2 】

①1 ②2

③-1 ④0

28.对文件而言,其组成单位是【 1 】

①记录②结点

③数据项④元素

29.索引表是【 2 】

①顺序存储结构②有序的

③无序的④任意的

30.VSAM是虚拟存储存取方法,该方法适宜的设备是【 2 】

①磁带②磁盘

③光盘④内存

二、填空题(每空2分,共10分)

3.算法DeleteList的功能是在带头结点的单链表head上删除第i个结点,请选择填空完成算法。

typedef char DataType;

typedef struct node

{ DataType data;

struct node *next;

}ListNode;

typedef ListNode *LinkList;

void DeleteList(【 1 】 head,int i) 【 1 】①

{ ListNode *p, *r;

p=GetNode(head,i-1); //GetNode返回第i-1个结点的位置

if(p==NULL||【2】) 【 2 】③

Error(“position error”);

r=p->next;

p->next=【3】; 【 3 】⑤

free(r);

}

备选答案:①LinkList ②ListNode ③p->next==NULL

④p->next ⑤r->next ⑥free(r)

4.算法TreeOrder的功能是实现二叉树的先序(根)遍历,请填空完成算法。

typedef char DataType;

typedef struct node

{ DataType data;

struct node *lchild,*rchild;

}BitTNode;

typedef BinTNode *BinTree;

void TreeOrder(BinTree t)

{ if(t)

{ printf(【 4 】); 【 4 】⑧TreeOrder(t->lchild);

TreeOrder(【 5 】); 【 5 】⑦

}

}

备选答案:⑦t->rchild ⑧t->data ⑨ t->lchild ⑩BinTree t

三、简答题(本大题共5小题,每小题5分,共25分)

1.逻辑结构分哪几种,存储结构有哪几种?

答:根据数据元素之间关系的不同特性,通常有下列四类基本结构:(1)集合;(2)线性结构;(3)树形结构;(4)图状结构或网状结构。有两种不同的存储结构:顺序存储结构和链式存储结构。

2.简述哪些链表从尾指针出发可以访问到链表中的任何结点?

答:循环链表和双向链表都从尾指针出发可以访问到链表中的任何结点

3.什么是满二叉树?什么是完全二叉树?满二叉树和完全二叉树有何关系?

答:(1)一棵深度为k且有2k-1个结点的二叉树称为满二叉树;

(2)一棵二叉树至多只有在最下面的两层上结点的度数可以小于2,并且最下层的结点都集中在该层最左面的若干位臵上,这种二叉树称为完全二叉树;

(3)满二叉树是完全二叉树,但完全二叉树不一定是满二叉树;

4.比较静态查找与动态查找的主要区别,它们的基本运算有哪些不同?

答:两种查找方法最大的区别在于:

a)静态查找方法不修改查找表;

b)动态查找在查找不成功时,将结点插入查找表中,即有可能修改查找表;

静态查找的基本运算有建表、查找和读表元;动态查找除上述基本操作外还有初始化、插入和删除操作;

5.简述什么是内部排序,什么是外部排序。

答:内部排序是指在排序的整个过程中,全部参与排序的数据都在计算机的内存储器中完成排序;

外部排序是指在排序的整个过程中,全部或部分参与排序的数据存储在计算机的外部存储器中,在排序过程中尚需对外存进行访问的排序过程。

四、分析计算题(本大题共5小题,每小题5分,共25分)

1.设有链表如图所示,其中:L是链表的头指针,p、p1和p2都是链表结点结构类型的指针。

请画出链表经如下算法处理后的结果。

SF1(L)

{ p=L->next;

while(p)

{ p1=p;

p2=p1->next;

while(p2)

{ if(p2->data==p->data)

{ p1->next=p2->next;

free(p2);

p2=p1->next;

}

else

{ p1=p2;

p2=p2->next;

}

}

p=p->next;

}

}

该算法的功能是:去掉链表中值相同的结点。

链表经算法处理后的结果为:

2.阅读下面的算法,指出下面程序段的功能是什么?

SeqStack S1, S2, tmp;

DataType x;..//假设栈tmp 和S2已做过初始化

while ( ! StackEmpty (&S1))

{x=Pop(&S1) ;

Push(&tmp,x);

}

while ( ! StackEmpty (&tmp) )

{x=Pop( &tmp);

Push( &S1,x);

Push( &S2, x);

}

程序段的功能是利用tmp 栈将一个非空栈s1的所有元素按原样复制到一个栈s2当中去。

3.设有稀疏矩阵A 的三元组表示(行、列号均从1开始计数)如下所示,请画出该矩阵。

解:稀疏矩阵A 为:

????????????????????--=00028000000091000000

0060000003130150220

015A 4.对n 个顶点的无向图采用邻接矩阵表示时,如何判别下列有关问题?

1) 图中有多少条边?

2) 任意两个顶点i 和j 是否有边相连?

3) 任意一个顶点的度是多少?

答:对于n 个顶点的无向图和有向图,用邻接矩阵表示时:

1)设m 为矩阵中非零元素的个数,则无向图的边数=m/2

2)在矩阵中第i 行,第j 列的元素若为非零值,则该两顶点有边相连。

3)对于无向图,任一顶点i 的度为第i 行中非零元素的个数。

5.设有一组关键字{19,1,23,14,55,20,84,27,68,11,10,77},采用哈希函数为:

H(key)=key%13,使用开放地址法的线性探测再散列方法解决冲突,散列地址空间为0~18,请构造该关键字序列的哈希表。

解:addr(19)=6

addr(1)=1

addr(23)=10

addr(14)=2 1,2

addr(55)=3

addr(84)=5

addr(20)=7

addr(27)=4 1,2,3,4

addr(68)=8 3,4,5,6,7,8

addr(11)=11

addr(10)=12 10,11,12

addr(77)=13 12,13

五、算法设计题(本题共10分)

试编写算法,用直接查找在顺序表L 中查找关键字key 。

int sequsearch (sqlist L, int key, n)

{ /*n 为线性表L 中元素个数*/

i=1

while (L[i].key!=key && i<=n)

i++;

if(i>n)

i=0;

return(i);

}

数据结构模拟题(开卷)

《数据结构》模拟题(补) 一.单项选择题 1.在线性表的下列存储结构中,读取元素花费时间最少的是【】。 A.单链表B.双链表C.顺序表D.循环链表 2.设计一个判定表达式中左、右括号是否配对出现的算法,采用【】数据结构最佳。 A.集合B.线性表C.队列D.栈 3.n个结点的线索二叉树上含有的线索数为【】。 A.2n B.n-1 C.n D.n+1 4.设广义表D=(a,(b,c)),则tail(D)=【】。 A.b,c B.(b,c) C.((b,c)) D.c 5.由4个结点可以构造出【】种不同的二叉树。 A.12 B.13 C.14 D.15 6.在栈中,出栈操作的时间复杂度为【】。 A.O(1) B.O(n) C.O(log2n) D.O(n2) 7.假设Q[0..len-1]表示循环队列,f为队头指针,r为队尾指针,则进队操作语句是【】。 A.f=f+1 B.r=r+1 C.f=(f+1)%len D.r=(r+1)%len 8.一个n*n的对称矩阵,如果以行或列为主序放入内存,则其容量为【】。 A.n*n B.n*n/2 C.n*(n+1)/2 D.(n+1)*(n+1)/2 9.队列操作的原则是【】。 A.进优于出B.出优于进C.先进先出D.后进先出 10.下列数据结构中,【】是非线性数据结构。 A.栈B.串C.队列D.树 11.两个指针p和q,分别指向单链表的两个元素,p所指元素是q所指元素的前驱,则【】。 A.p==q B.q->next=p C.p->next=q D.p->next=q->next 12.数组A中,每个元素的长度为4个字节,行下标i从1到5,列下标j从1到4,从首 地址SA开始连续存放在存储器内,该数组按行存放时,元素A[3][2]的起始地址为【】。 A.SA+20 B.SA+36 C.SA+40 D.SA+45 13.已知一个顺序存储的线性表,设每个结点需占m个存储单元,若第一个结点的地址为d1, 则第i个结点的地址为【】。 A.d1+(i-1)*m B.d1+i*m C.d1+(i+1)m D.d1-i*m 14.分析下列算法suanfa1(n)的时间复杂度是【】。 void suanfa1(int n) { int i,j,x=1; for(i=0;i

数据结构习题及参考答案

习题1 一、单项选择题 A1.数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 C2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 D3.树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 B4.设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; A.O(1) B.O(2n) C.O(n) D.O(3n) CA5.算法分析的目的是(1),算法分析的两个主要方面是(2)。 (1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2) A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6.计算机算法指的是(1),它具备输入,输出和(2)等五个特性。 (1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。 A.低 B.高 C.相同 D.不好说 8.数据结构作为一门独立的课程出现是在()年。 A.1946 B.1953 C.1964 D.1968 9.数据结构只是研究数据的逻辑结构和物理结构,这种观点()。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对

大数据结构的基本概念

实用标准文档 文案大全第1章数据结构基础 结构之美无处不在: 说到结构,任何一件事物都有自己的结构,就如可以看得见且触摸得到的课桌、椅子,还有看不见却也存在的化学中的分子、原子。可见,一件事物只要存在,就一定会有自己的结构。一幅画的生成,作家在挥毫泼墨之前,首先要在数尺素绢之上做结构上的统筹规划、谋篇布局。一件衣服的制作,如果在制作之前没有对衣服的袖、领、肩、襟、身等各个部位周密筹划,形成一个合理的结构系统,便无法缝制出合体的衣服。还有教育管理系统的结构、通用技术的学科结构和课堂教学结构等。试想一下,管理大量数据是否也需要用到数据结构呢? 本章知识要点: 数据结构的基本概念 数据类型和抽象数据类型 算法和算法分析 1.1 数据结构的基本概念 计算机科学是一门研究数据表示和数据处理的科学。数据是计算机化的信息,它是计算机可以直接处理的最基本和最重要的对象。无论是进行科学计算,还是数据处理、过程控制、对文件的存储和检索以及数据库技术等计算机应用,都是对数据进行加工处理的过程。因此,要设计出一个结构良好而且效率较高的程序,必须研究数据的特性、数据间的相互关系及其对应的存储表示,并利用这些特性和关系设计出相应的算法和程序。 计算机在发展的初期,其应用围是数值计算,所处理的数据都是整型、实型和布尔型等简单数据,以此为加工、处理对象的程序设计称为数值型程序设计。随着计算技术的发展,计算机逐渐进入到商业、制造业等其他领域,广泛地应用于数据处理和过程控制中。与此相对应,计算机所处理的数据也不再是简单的数值,而是字符串、图形、图像、语音和视频等复杂的数据。这些复杂的数据不仅量大,而且具有一定的结构。例如,一幅图像是一个由简单数值组成的矩阵,一个图形中的几何坐标可以组成表。此外,语言编译过程

数据结构课程实验指导书

数据结构实验指导书 一、实验目的 《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。本课程较为系统地论述了软件设计中常用的数据结构以及相应的存储结构与实现算法,并做了相应的性能分析和比较,课程内容丰富,理论系统。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: 1)理论艰深,方法灵活,给学习带来困难; 2)内容丰富,涉及的知识较多,学习有一定的难度; 3)侧重于知识的实际应用,要求学生有较好的思维以及较强的分析和解决问题的能力,因而加大了学习的难度; 根据《数据结构》课程本身的特性,通过实验实践内容的训练,突出构造性思维训练的特征,目的是提高学生分析问题,组织数据及设计大型软件的能力。 课程上机实验的目的,不仅仅是验证教材和讲课的内容,检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面: (1)加深对课堂讲授内容的理解 实验是对学生的一种全面综合训练。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实验题中的问题比平时的习题复杂得多,也更接近实际。实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变" 活" ,起到深化理解和灵活掌握教学内容的目的。 不少学生在解答习题尤其是算法设计时,觉得无从下手。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出

现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。 (2) 培养学生软件设计的综合能力 平时的练习较偏重于如何编写功能单一的" 小" 算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。 通过实验使学生不仅能够深化理解教学内容,进一步提高灵活运用数据结构、算法和程序设计技术的能力,而且可以在需求分析、总体结构设计、算法设计、程序设计、上机操作及程序调试等基本技能方面受到综合训练。实验着眼于原理与应用的结合点,使学生学会如何把书本上和课堂上学到的知识用于解决实际问题,从而培养计算机软件工作所需要的动手能力。 (3) 熟悉程序开发环境,学习上机调试程序一个程序从编辑,编译,连接到运行,都要在一定的外部操作环境下才能进行。所谓" 环境" 就是所用的计算机系统硬件,软件条件,只有学会使用这些环境,才能进行 程序开发工作。通过上机实验,熟练地掌握程序的开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆语法错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,尽快掌握程序调试方法是非常重要的。分析问题,选择算法,编好程序,只能说完成一半工作,另一半工作就是调试程序,运行程序并得到正确结果。 二、实验要求 常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实验题目的远不如从实际问题中的复杂程度度高,但为了培养一个软件工作者所应具备的科学工作的方法和作风,也应遵循以下五个步骤来完成实验题目: 1) 问题分析和任务定义 在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。本步骤强调的是做什么?而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的

数据结构模拟试题及答案

数据结构模拟试题一 一、判断题(每小题1 分,共15分) 1.计算机程序处理的对象可分为数据和非数据两大类。 2.全体自然数按大小关系排成的序列是一个线性表。 3.在描述单向链表的结点类型时,必须首先描述数值字段,然后再描述指针字段。 4.顺序栈是一种规定了存储方法的栈。 5.树形结构中的每个结点都有一个前驱。 6.在任何一棵完全二叉树中,最多只有一个度为1的分支结点。 7.若某顶点是有向图的根,则该顶点的入度一定是零。 8.如果某图的邻接矩阵有全零的行,没有全零的列,则该图一定是有向图。 9.用一维数组表示矩阵可以节省存储空间。 10.广义表的长度与广义表中含有多少个原子元素有关。 11.分块查找的效率与线性表被分成多少块有关。 12.散列表的负载因子等于存入散列表中的结点个数。 13.在起泡排序过程中,某些元素可能会向相反的方向移动。 14.按某种逻辑关系组织起来的记录的集合称为逻辑记录。 15.索引非顺序文件的特点是索引表中的索引项不一定按关键字大小有序排列。 二、填空题(每空1分,共15分) 1.顺序表是一种_____________线性表。 2.若用Q[1]~Q[m]作为非循环顺序队列的存储空间,则对该队列最多只能执行___次插入操作。 3.栈和队列的区别在于________的不同。 4.在高度为h(h≥0)的二叉树中至少有___个结点,至多有___个结点。 5.若用二叉链表来存储具有m个叶子,n个分支结点的树,则二叉链表中有___个左指针域为空的结点,有___个右指针域 为空的结点。 6.n个顶点的有根有向图中至少有___条边,至多有___条边。 7.10行20列矩阵若用行优先顺序表来表示,则矩阵中第8行第7列元素是顺序表中第___个元素。 8.在各元素查找概率相等的情况下,用顺序查找方法从含有12个元素的有序表中查找一个元素,元素间的平均比较次数是 _____。 9.在归并两个长度为m的有序表时,排序码的比较次数至少是___次,至多是___次。 10.在高度为3的6阶B-树中,至少有___个关键字,至多有___个关键字。 三、选择题(每题2分,共30分) 1.计算机所处理的数据一般具有某种内在联系性,这是指________。 A.元素和元素之间存在某种关系B.数据和数据之间存在某种关系 C.元素内部具有某种结构D.数据项和数据项之间存在某种关系 2. 假设顺序表目前有4个元素,第i个元素放在R[i]中,1≤i≤4 。若把新插入元素存入R[6],则________。 A.会产生运行错误B.R[1]~R[6]不构成一个顺序表 C.顺序表的长度大于顺序表元素个数,会降低存储空间利用率 D.顺序表元素序号和数组元素下标不一致,会给使用带来麻烦 3. 设H是不带表头结点循环单向链表的表头指针,P是和H同类型的变量。当P指向链表最后一个结点时,_________。A.P所指结点指针字段的值为空B.P的值与H的值相等 C.P所指结点的地址与H的值相等D.P所指结点指针字段的值与H的值相等 4. 栈的定义不涉及数据的__________。 A.逻辑结构B.存储结构C.运算D.逻辑结构和存储结构 5. 设5个元素进栈的顺序是1,2,3,4,5,则出栈的顺序有可能是___________。 A.2,4,1,3,5 B.3,4,1,5,2 C.3,2,4,1,5 D.4,1,3,2,5 6. 若某棵二叉树结点的前序序列和中序序列相同,则该二叉树_________。 A.只有一个结点B.每个结点都没有左孩子C.每个结点都没有右孩子D.不存在 7.对于一棵具有n个结点,度为3的树来说,____________。 A.树的高度至多是n-3 B.树的高度至多是n-2 C.树的最低高度是┏log3(n+1)┓ D.至少在某一层上正好有3个结点 8.n个顶点的有向图如果可以进行拓扑排序,则可以断定该有向图__________。 A.含n个强连通分量B.有唯一的入度为0的顶点C.有多个出度为0的顶点 D.是一个有根有向图 9. 特殊矩阵用行优先顺序表表示,_____________ A.简化了矩阵元素之间的逻辑关系B.便于按行处理矩阵元素

数据结构作业题及参考答案

东北农业大学网络教育学院 数据结构作业题(一) 一、选择题(每题2分,共20分) 1.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。 A、O(n) B、O (n/2) C、O (1) D、O (n2) 2.带头结点的单链表first为空的判定条件是()。 A、first == NULL; B、first->link == NULL; C、first->link == first; D、first != NULL; 3.在一棵树中,()没有前驱结点。 A、分支结点 B、叶结点 C、树根结点 D、空结点 4.在有向图中每个顶点的度等于该顶点的()。 A、入度 B、出度 C、入度与出度之和 D、入度与出度之差 5.对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为()的值除以9。 A、20 B、18 C、25 D、22 6.下列程序段的时间复杂度为()。 s=0; for(i=1;i

《数据结构》基本概念

《数据结构》基本概念

基本概念 ?数据 数据是信息的载体,在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号集合。 ?数据元素 数据元素也称为结点,是表示数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 ?数据项 数据项是构成数据元素的不可分割的最小单位。?数据对象 数据对象是具有相同性质的数据元素的集合,是数据的子集。 注意:在不产生混淆的情况下,将数据对象简称为数据。 ?数据结构 数据结构是指相互之间存在一定关系的数据元素的集合,即数据结构是一个二元组DataStructure = (D, R),其中D是数据元素的集合,R是D上关系的集合。按照视点的不同,数据结构分为逻辑结构和存储结构。 ?数据的逻辑结构 数据的逻辑结构是指数据元素之间逻辑关系的整体。

根据数据元素之间逻辑关系的不同,数据结构分为四类: ⑴集合:数据元素之间就是“属于同一个集合”,除此之外,没有任何关系; ⑵线性结构:数据元素之间存在着一对一的线性关系; ⑶树结构:数据元素之间存在着一对多的层次关系; ⑷图结构:数据元素之间存在着多对多的任意关系。 注意:数据结构分为两类:线性结构和非线性结构。?数据的存储结构 数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。通常有两种存储结构:顺序存储结构和链接存储结构。 顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系是由元素的存储位置来表示的。 链接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系是用指针来表示的。 注意:存储结构除了存储数据元素之外,必须存储数据元素之间的逻辑关系。 ?抽象数据类型 抽象数据类型是一个数据结构以及定义在该结构上

实验指导-数据结构B教案资料

实验指导-数据结构B

附录综合实验 1、实验目的 本课程的目标之一是使得学生学会如何从问题出发,分析数据,构造求解问题的数据结构和算法,培养学生进行较复杂程序设计的能力。本课程实践性较强,为实现课程目标,要求学生完成一定数量的上机实验。从而一方面使得学生加深对课内所学的各种数据的逻辑结构、存储表示和运算的方法等基本内容的理解,学习如何运用所学的数据结构和算法知识解决应用问题的方法;另一方面,在程序设计方法、C语言编程环境以及程序的调试和测试等方面得到必要的训练。 2、实验基本要求: 1)学习使用自顶向下的分析方法,分析问题空间中存在哪些模块,明确这些模块之间的关系。 2)使用结构化的系统设计方法,将系统中存在的各个模块合理组织成层次结构,并明确定义各个结构体。确定模块的主要数据结构和接口。 3)熟练使用C语言环境来实现或重用模块,从而实现系统的层次结构。模块的实现包括结构体的定义和函数的实现。 4)学会利用数据结构所学知识设计结构清晰的算法和程序,并会分析所设计的算法的时间和空间复杂度。 5)所有的算法和实现均使用C语言进行描述,实验结束写出实验报告。

3、实验项目与内容: 1、线性表的基本运算及多项式的算术运算 内容:实现顺序表和单链表的基本运算,多项式的加法和乘法算术运算。 要求:能够正确演示线性表的查找、插入、删除运算。实现多项式的加法和乘法运算操作。 2、二叉树的基本操作及哈夫曼编码译码系统的实现 内容:创建一棵二叉树,实现先序、中序和后序遍历一棵二叉树,计算二叉树结点个数等操作。哈夫曼编码/译码系统。 要求:能成功演示二叉树的有关运算,实现哈夫曼编码/译码的功能,运算完毕后能成功释放二叉树所有结点占用的系统内存。 3、图的基本运算及智能交通中的最佳路径选择问题 内容:在邻接矩阵和邻接表两种不同存储结构上实现图的基本运算的算法,实现图的深度和宽度优先遍历算法,解决智能交通中的路径选择问题。设有n 个地点,编号为0~n-1,m条路径的起点、终点和代价由用户输入提供,寻找最佳路径方案(例如花费时间最少、路径长度最短、交通费用最小等,任选其一即可)。 要求:设计主函数,测试上述运算。 4、各种内排序算法的实现及性能比较 内容:验证教材的各种内排序算法。分析各种排序算法的时间复杂度。 要求:使用随机数产生器产生较大规模数据集合,运行上述各种排序算法,使用系统时钟测量各算法所需的实际时间,并进行比较。

《数据结构C》模拟试题

山东科技大学继续教育学院 《数据结构C》模拟试题一 班级姓名学号 一、选择题(20分) 1. 组成数据的基本单位是( )。 (A) 数据项(B)数据类型(C)数据元素(D)数据变量 2. 线性表的链接实现有利于( )运算。 (A) 插入(B)读表元(C)查找(D)定位 3. 串的逻辑结构与( )的逻辑结构不同。 (A) 线性表(B)栈(C)队列(D)树 4. 二叉树第i(i≥1)层最多有( )个结点。 (A) 2i(B)2i (C) 2i-1(D) 2i-1 5. 设单链表中p指向结点A,若要删除A后结点(若存在),则需要修改p的操作为( ) (A) p.Next = p.Next.Next (B)p=p.Next (C)p=p.Next.Next (D)p.Next=p 6. 设一数列的输入顺序为1,2,3,4,5,6,通过栈操作不可能排成的输出序列为( ) (A) 3,2,5,6,4,1 (B) 1,5,4,6,2,3 (C) 2,4,3,5,1,6 (D) 4,5,3,6,2,1 7. 设字符串S1=’ABCDEFG’,S2=’PQRST’,则运算S=CONCAT(SUB(S1,2,LENGTH(S2)),SUB(S1,LENGTH(S2),2))的结果为( ) (A) ‘BCQR’ (B) ‘BCDEF’ (C) ’BCDEFG’ (D) ‘BCDEFEF’ 8. 有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占1个地址空间,则a85地址为( ) (A)13 (B) 33 (C) 18 (D) 40 9. 如果结点A有3个兄弟,而且B为A的双亲,则B的度为( ) (A) 3 (B) 4 (C) 5 (D) 1 10. 线索化二叉树中某结点D没有左孩子的必要条件是( ) (A) D.Lchild=null (B) D.ltag=1 (C) D.Rchild=null (D) D.ltag=0 二、填空题(20分) 1. 对于一个以顺序实现的循环队列Q[0..m_1],队头、队尾指针分别为f,r,其判空的条件是 ,判满的条件是。 2. 循环链表的主要优点是。 3. 给定一个整数集合{3,5,6,9,12},画出其对应的一棵Huffman树。 4 双向循环链表中,在p所指的结点之后插入f所指的结点,其操作为。 5. 下列为朴素的模式匹配算法,请在算法的处填入正确的子句。

《数据结构》填空作业题(答案)

《数据结构》填空作业题答案 第 1 章绪论(已校对无误) 1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。 2.程序包括两个内容:数据结构和算法。 3.数据结构的形式定义为:数据结构是一个二元组:Data Structure =( D, S)。 4.数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。 5.数据的逻辑结构可以分类为线性结构和非线性结构两大类。 6.在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。 7.在树形结构中,数据元素之间存在一对多的关系。 8.数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。 9.数据的逻辑结构包括线性结构、树形结构和图形结构 3 种类型,树型结构和有向 图结构合称为非线性结构。 10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑 关系由存储单元位置的邻接关系来体现。 11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑 关系由附加的指针域来体现。 12.数据的存储结构可用 4 种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。 13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。 14.数据结构在物理上可分为顺序存储结构和链式存储结构。 15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数 据的实现方法。 16.数据元素可由若干个数据项组成。 17.算法分析的两个主要方面是时间复杂度和空间复杂度。 18.一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂 度是用该算法在运行过程中所占用的存储空间的大小来度量的。 19.算法具有如下特点:有穷性、确定性、可行性、输入、输出。 20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切 的定义,并在有穷时间内计算出结果。 21. 下面程序段的时间复杂度为㏒ 3n 。 1

《数据结构》基本概念

基本概念 数据 数据是信息的载体,在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号 集合。 数据元素数据元素也称为结点,是表示数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据项 数据项是构成数据元素的不可分割的最小单位。 数据对象数据对象是具有相同性质的数据元素的集合,是数据的子集。注意:在不产生混淆的情况下,将数据对象简称为数据。 数据结构数据结构是指相互之间存在一定关系的数据元素的集合,即数据结构是一个二元组DataStructure = (D, R),其中D是数据元素的集合,R是D上关系的集合。按照视点的不同,数据结构分为逻辑结构和存储结构。 数据的逻辑结构数据的逻辑结构是指数据元素之间逻辑关系的整体。根据数据元素之间逻辑关系的不同,数据结构分为四类: ⑴ 集合:数据元素之间就是“属于同一个集合”,除此之外,没有任何关系; ⑵ 线性结构:数据元素之间存在着一对一的线性关系; ⑶ 树结构:数据元素之间存在着一对多的层次关系; ⑷ 图结构:数据元素之间存在着多对多的任意关系。 注意:数据结构分为两类:线性结构和非线性结构。 数据的存储结构数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。通常有两种存储结构:顺序存储结构和链接存储结构。 顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系是由元素的存储位置来表示的。 链接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系是用指针来表示的。 注意:存储结构除了存储数据元素之外,必须存储数据元素之间的逻辑关系。 抽象数据类型抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称。抽象数据类型提供了使用和实现两个不同的视图,实现了封装和信息隐藏。 算法的定义通俗地讲,算法是解决问题的方法,严格地说,算法是对特定问题求解步骤的一种描述,是指令的有限序列。 算法的特性 ⑴ 输入:一个算法有零个或多个输入(即算法可以没有输入),这些输入通常取自于某个特定的对象集合。 ⑵ 输出:一个算法有一个或多个输出(即算法必须要有输出),通常输出与输入之间有着某种特定的关系。 ⑶ 有穷性:一个算法必须总是(对任何合法的输入)在执行有穷步之后结束,且每一步都在有穷时间内完成。 ⑷ 确定性:算法中的每一条指令必须有确切的含义,不存在二义性。并且,在任何条件下,对于相同的输入只能得到相同的输出。 ⑸ 可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。 线性表的定义 线性表简称表,是零个或多个具有相同类型的数据元素的有限序列。数据元素的个数称为线性表的长度,长度等于零时称为空表。 线性表的逻辑关系 在一个非空表L= (a i, a2, , a n)中,任意一对相邻的数据元素和a i之间(1< i < n)存在序偶 关系(a i-i,a i),且a i-i称为a i的前驱,a i称为的后继。在这个序列中,a i无前驱,a n无后继,其它每个元素有且仅有一个前驱和一个后继。 顺序表的存储结构定义 用MaxSize 表示数组的长度,顺序表的存储结构定义如下: #define MaxSize i00 typedef struct { ElemType data[MaxSize]; // ElemType 表示不确定的数据类型 int length; //length 表示线性表的长度

《数据结构》实验指导

《数据结构》实验指导 (计算机信息大类适用) 实验报告至少包含以下内容: 实验名称 实验目的与要求: 实验内容与步骤(需要你进行细化): 实验结果(若顺利完成,可简单说明;若实验过程中遇到问题,也请在此说明) 收获与体会(根据个人的实际情况进行说明,不得空缺) 实验1 大整数加法(8课时) 目的与要求: 1、线性表的链式存储结构及其基本运算、实现方法和技术的训练。 2、单链表的简单应用训练。 3、熟悉标准模版库STL中的链表相关的知识。 内容与步骤: 1、编程实现单链表的基本操作。 2、利用单链表存储大整数(大整数的位数不限)。 3、利用单链表实现两个大整数的相加运算。 4、进行测试,完成HLOJ(https://www.doczj.com/doc/677236383.html,) 9515 02-线性表大整数A+B。 5、用STL之list完成上面的任务。 6、尝试完成HLOJ 9516 02-线性表大菲波数。 实验2 栈序列匹配(8课时) 目的与要求 1、栈的顺序存储结构及其基本运算、实现方法和技术的训练。 2、栈的简单应用训练。 3、熟悉标准模版库STL中的栈相关的知识。 内容与步骤: 1、编程实现顺序栈及其基本操作。 2、对于给出的入栈序列和出栈序列,判断2个序列是否相容。即:能否利用栈 将入栈序列转换为出栈序列。 3、进行测试,完成HLOJ 9525 03-栈与队列栈序列匹配。 4、用STL之stack完成上面的任务。 5、尝试完成HLOJ 9522 03-栈与队列胡同。

实验3 二叉排序树(8课时) 目的与要求 1、二叉树的链式存储结构及其基本运算、实现方法和技术的训练。 2、二叉树的遍历方法的训练。 3、二叉树的简单应用。 内容与步骤: 1、编程实现采用链式存储结构的二叉排序树。 2、实现插入节点的操作。 3、实现查找节点的操作(若查找失败,则将新节点插入二叉排序树)。 4、利用遍历算法对该二叉排序树中结点的关键字按递增和递减顺序输出,完成 HLOJ 9576 07-查找二叉排序树。 5、尝试利用二叉排序树完成HLOJ 9580 07-查找Let the Balloon Rise。 实验4 最小生成树(8课时) 目的与要求 1、图的邻接矩阵存储结构及其相关运算的训练。 2、掌握最小生成树的概念。 3、利用Prim算法求解最小生成树。 实验背景: 给定一个地区的n个城市间的距离网,用Prim算法建立最小生成树,并计算得到的最小生成树的代价。要求显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。 内容与步骤: 1、建立采用邻接矩阵的图。 2、编程实现Prim算法,求解最小生成树的代价。 3、尝试利用Prim算法完成:HLOJ 9561 06-图最小生成树。

《数据结构》模拟试卷一及答案

模拟试卷一 一、单选题(每题 2 分,共20分) 1.以下数据结构中哪一个是线性结构?( ) A. 有向图 B. 队列 C. 线索二叉树 D. B树 2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点, 则执行如下( )语句序列。 A. p=q; p->next=q; B. p->next=q; q->next=p; C. p->next=q->next; p=q; D. q->next=p->next; p->next=q; 3.以下哪一个不是队列的基本运算?() A. 在队列第i个元素之后插入一个元素 B. 从队头删除一个元素 C. 判断一个队列是否为空 D.读取队头元素的值 4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成 ( )个不同的字符串? A.14 B.5 C.6 D.8 5.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。 A. 11 B.35 C. 19 D. 53 图一 6.该二叉树结点的前序遍历的序列为( )。 A.E、G、F、A、C、D、B B. E、A、G、C、F、B、D C. E、A、C、B、D、G、F D. E、G、A、C、D、F、B 7.该二叉树结点的中序遍历的序列为( )。 A. A、B、C、D、E、G、F B. E、A、G、C、F、B、D C. E、A、C、B、D、G、F D. B、D、C、A、F、G、E 8.该二叉树的按层遍历的序列为( )。 A.E、G、F、A、C、D、B B. E、A、C、B、D、G、F C. E、A、G、C、F、B、D D. E、G、A、C、D、F、B 9.下面关于图的存储的叙述中正确的是( )。 A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关 C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关 D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关10.设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建 堆的结果?( )

数据结构习题及参考答案 .

习题1 一、单项选择题 1.数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 3.树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 4.设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; A.O(1) B.O(2n) C.O(n) D.O(3n) 5.算法分析的目的是(1),算法分析的两个主要方面是(2)。 (1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2) A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6.计算机算法指的是(1),它具备输入,输出和(2)等五个特性。 (1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。 A.低 B.高 C.相同 D.不好说 8.数据结构作为一门独立的课程出现是在()年。 A.1946 B.1953 C.1964 D.1968 9.数据结构只是研究数据的逻辑结构和物理结构,这种观点()。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对

数据结构复习要点(整理版).docx

第一章数据结构概述 基本概念与术语 1.数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序所处理的符号的总称。 2. 数据元素:数据元素是数据的基本单位,是数据这个集合中的个体,也称之为元素,结点,顶点记录。 (补充:一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。 ) 3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。(有时候也 叫做属性。) 4.数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 (1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。 数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。 依据数据元素之间的关系,可以把数据的逻辑结构分成以下几种: 1. 集合:数据中的数据元素之间除了“同属于一个集合“的关系以外,没有其他关系。 2. 线性结构:结构中的数据元素之间存在“一对一“的关系。若结构为非空集合,则除了第一个元素之外,和最后一个元素之外,其他每个元素都只有一个直接前驱和一个直接后继。 3. 树形结构:结构中的数据元素之间存在“一对多“的关系。若数据为非空集,则除了第一个元素 (根)之外,其它每个数据元素都只有一个直接前驱,以及多个或零个直接后继。 4. 图状结构:结构中的数据元素存在“多对多”的关系。若结构为非空集,折每个数据可有多个(或零个)直接后继。 (2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。想要计算机处理数据,就必须把数据的逻辑结构映射为数据的存储结构。逻辑结构可以映射为以下两种存储结构: 1. 顺序存储结构:把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系。 2. 链式存储结构:借助指针表达数据元素之间的逻辑关系。不要求逻辑上相邻的数据元素物理位置上也相邻。 5. 时间复杂度分析:1.常量阶:算法的时间复杂度与问题规模n 无关系T(n)=O(1) 2. 线性阶:算法的时间复杂度与问题规模 n 成线性关系T(n)=O(n) 3. 平方阶和立方阶:一般为循环的嵌套,循环体最后条件为i++ 时间复杂度的大小比较: O(1)< O(log 2 n)< O(n )< O(n log 2 n)< O(n2)< O(n3)< O(2 n )

2017数据结构实验指导书

《数据结构》实验指导书 贵州大学 电子信息学院 通信工程

目录 实验一顺序表的操作 (3) 实验二链表操作 (8) 实验三集合、稀疏矩阵和广义表 (19) 实验四栈和队列 (42) 实验五二叉树操作、图形或网状结构 (55) 实验六查找、排序 (88) 贵州大学实验报告 (109)

实验一顺序表的操作 实验学时:2学时 实验类型:验证 实验要求:必修 一、实验目的和要求 1、熟练掌握线性表的基本操作在顺序存储和链式存储上的实现。 2、以线性表的各种操作(建立、插入、删除等)的实现为重点。 3、掌握线性表的动态分配顺序存储结构的定义和基本操作的实现。 二、实验内容及步骤要求 1、定义顺序表类型,输入一组整型数据,建立顺序表。 typedef int ElemType; //定义顺序表 struct List{ ElemType *list; int Size; int MaxSize; }; 2、实现该线性表的删除。 3、实现该线性表的插入。 4、实现线性表中数据的显示。 5、实现线性表数据的定位和查找。 6、编写一个主函数,调试上述算法。 7、完成实验报告。 三、实验原理、方法和手段 1、根据实验内容编程,上机调试、得出正确的运行程序。 2、编译运行程序,观察运行情况和输出结果。 四、实验条件 运行Visual c++的微机一台 五、实验结果与分析 对程序进行调试,并将运行结果进行截图、对所得到的的结果分析。 六、实验总结 记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等,并将其写入实验报告中。

【附录----源程序】 #include #include using namespace std; typedef int ElemType; struct List { ElemType *list; int Size; int MaxSize; }; //初始化线性表 bool InitList(List &L) { L.MaxSize=20; L.list=new ElemType[L.MaxSize]; for(int i=0;i<20&&L.list==NULL;i++) { L.list=new ElemType[L.MaxSize]; } if(L.list==NULL) { cout<<"无法分配内存空间,退出程序"<L.Size+1||pos<1) { cout<<"位置无效"<

数据结构模拟试卷(含答案)

数据结构设计课程代码:7399 一、单项选择题(在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。每小题2分,共40分) 1、串的长度是()。 A、串中不同字母的个数 B、串中不同字符的个数 C、串中所含字符的个数,且大于0 D、串中所含字符的个数 2、若用数组S[1..n]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。为这两个栈分配空间的最佳方案是()。 A、S1的栈底位置为0,S2的栈底位置为n+1 B、S1的栈底位置为0,S2的栈底位置为n/2 C、S1的栈底位置为1,S2的栈底位置为n D、S1的栈底位置为1,S2的栈底位置为n/2 3、队列操作的原则是()。 A、先进先出 B、后进先出 C、只能进行插入 D、只能进行删除 4、有64个结点的完全二叉树的深度为()(根的层次为1)。 A、8 B、7 C、6 D、5 5、在有n个结点的二叉链表中,值为非空的链域的个数为()。

A、n-1 B、2n-1 C、n+1 D、2n+1 6、带权有向图G用邻接矩阵A存储,则顶点i的人度等于A中()。 A、第i行非∞的元素之和 B、第i列非∞的元素之和 C、第i行非∞且非0的元素个数 D、第i列非∞且非0的元素个数 7、在有n个结点且为完全二叉树的二叉排序树中查找一个键值,其平均比较次数的数量级为()。 A、0(n) B、0(log2n) C、0(nolg2n) D、0(n2) 8、若表R在排序前已按键值递增顺序排列,则()算法的比较次数最少。 A、直接插入排序 B、快速排序 C、归并排序 D、选择排序 9、下列排序算法中,()排序在某趟结束后不一定选出一个元素放到其最终的位置上。 A、选择 B、冒泡 C、归并 D、堆

相关主题
文本预览
相关文档 最新文档