数据结构期末考试题(数据结构期末考试题及答案2022)

本篇文章给大家谈谈数据结构期末考试题,以及数据结构期末考试题及答案2022对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

数据结构题求答案

题号:1 题型:是非题 本题分数:5

内容:

链表是一种采用链式存储结构存储的线性表。

1、 错

2、 对

标准答案:2

本题得分:5

题号:2 题型:是非题 本题分数:5

内容:

子串是主串中任意个连续字符组成的序列。

1、 错

2、 对

标准答案:1

学员答案:2

本题得分:0

题号:3 题型:是非题 本题分数:5

内容:

顺序存储是一种随机存取的数据结构。

1、 错

2、 对

标准答案:2

本题得分:0

题号:4 题型:是非题 本题分数:5

内容:

两个串相等的充要条件是串的长度相等和对应的字符相等。

1、 错

2、 对

标准答案:2

本题得分:5

题号:5 题型:是非题 本题分数:5

内容:

栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型的数据结构。

1、 错

2、 对

标准答案:2

本题得分:5

题号:6 题型:单卜册选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

图形:

A、

B、

C、

D、

标准答案:D

本题得分:5

题号:7 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

设有两个串p和q,求q在p中首次出现的位置的运算称作()

A、求子串

B、串的复制

C、串的定位

D、串的比较

标准答案:C

本题得分:5

题号:8 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

以下哪一个不是队列的基本运算?

A、从队尾插入一个新元素

B、从队列中删除第i个元素

C、判断一个队列是否为空

D、读取队头元素的值

标准答案:D

本题得分:0

题号:9 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

队列中存取数据元素的原则是 ()

A、后进先出

B、先进先出

C、先进后出

D、随意进出

标准答案:B

本题得分:5

题号:10 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

图形:

A、

B、

C、

D、

标准答案:D

本题得分:5

题号:11 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

图形:

A、

B、

C、

D、

标准答案:D

本题得分:5

题号:12 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

若进栈序列为a, b, c,则通过入出栈操作可能得到的a, b, c的可能的出栈序列有()种。

A、4

B、5

C、6

D、7

标准答案:A

本题得分:5

题号:13 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

图形:

A、

B、

C、

D、

标准答案:D

本题得分:0

题号:14 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

图形:

A、

B、

C、

D、

标准答案:B

学员答案:B本题得分:5

题号:15 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

图形:

A、

B、

C、

D、

标准答案:C

本题得分:0

题号:16 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

向一个有115个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素。

A、15

B、57.5

C、115

D、116

标准答案:B

本题得分:5

题号:17 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

以下对循环链表的叙述错误的是()

A、单链表和双向链表经首尾相接都可以形成循环链表

B、循环链表可以用头指针表示,也可以用尾指针表示

C、从循环链表的任何一个结点出发都能访问到表中的其他结点

D、构成循环链表需要增手轿加存储空间

标准答案:D

本题得分:0

题号:18 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

图形:

A、

B、

C、

D、

标准答案:D

本题得分:0

题号:19 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题分数:5

内容:

图形:

A、

B、

C、

D、

标准答案:D

本题得分:0

题号:20 题型:单选题(请在以下几个选项中型薯宏选择唯一正确答案) 本题分数:5

内容:

对于只在表的首、尾进行插入操作的线性表,宜采用的存储结构为:()

A、顺序表

B、用头指针表示的单循环链表

C、用尾指针表示的单循环链表

D、单链表

标准答案:C

本题得分:0

请教数据结构题目

1.D

链表是线形表胡正的一种,线形表分为顺序存储结构和链式存储结构。线形表的顺序存储结构的特点是逻辑关系上相邻的租做谈两个元素物理位置上也相邻,因此可以随机存取表中任一元素。链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。 因此D错

(不好意思,一开始想错了)

2.A

很明显,只有A需要遍历。弊碰

3.D

这个也很明显。比如尾指针为tail

那么在最后插入一个元素P为

P=tail-next;

tail-next=P;

tail=P;

删除第一个元素

P-next=P-next-next

均为O(1)

数据结构算法 试题 急! 试构造下图的最小生成树,要求分步给出构造过程。

图 有如下参数:

 

边数=8 顶点数=5

 

顶点 顶点 边的权值

v1   v2   6

v1   v3   4

v1   v4   2

v2   v3   5

v2   v4   8

v2   v5   6

v3   v4   5

v4   v5   7

用Kruskal(克鲁斯卡尔)算法,求最小生成树.

 

先将所有边的权值按照从小到大排序:

 

顶点 顶点 边的权值

v1   v4   2

v1   v3   4

v2   v3   5

v3   v4   5

v1   v2   6

v2   v5   6

v4   v5   7

v2   v4   8

然后,每次提取权值最小边,逐步组成最小生成树:

 

(1) 取最小边(v1, v4, 2)

    v1 -- v4

(2) 取边(v1, v3, 4),不会产生环路.

    v1 -- v4

    |

    |

    v3

(3) 取边(v2, v3, 5),不会产生环路.

    v1 -- v4

    |

    |

    v3 -- v2

(4) 如果取边(v3, v4, 5),会产生环路,所以不能取.

    如果取边(v1, v2, 6),会产生环路,所以不能取.

    取边(v2, v5, 6),不会产生环路.

    v1 -- v4

    |

    |

    v3 -- v2 -- v5

    这就是最小生成树,连通了所有顶点,总权值最小.

 

    顶点      边的权值

    (v1, v4)  2

    (v1, v3)  4

    (v2, v3)  5

    (v2, v5)  6

// C语言测试程序

// 最小生成树 Kruskal(克鲁斯卡尔)算法

#include "stdio.h"

#define MAXEDGE 侍型毕20

#define MAXVEX 20

#define INF 65535

typedef struct

{

int arc[MAXVEX][MAXVEX];

int numVertexes, numEdges;

}MGraph;

typedef struct

{

int begin;

int end;

int weight;

}Edge;   //对边集数组Edge结构的定义

//创建图

void CreateMGraph(MGraph *G)

{

int i, j;

G-numEdges=8;     //边数

G-numVertexes=5;  //顶点数

for (i = 0; i  G-numVertexes; i++)//初始化图

{

for ( j = 0; j  G-numVertexes; j++)

{

if (i==j)

G-arc[i][j]=0;

else

G-arc[i][j] = G-arc[j][i] = INF;

}

}

G-arc[0][1]=6;

G-arc[0][2]=4;

G-arc[0][3]=2;

G-arc[1][2]=5;

G-arc[1][3]=8;

G-arc[1][4]=6;

G-arc[2][3]=5;

G-租早arc[3][4]=7;

for(i = 0; i  G-numVertexes; i++)

{

for(j = i; j  G-numVertexes; j++)

{

G-arc[j][i] =G-arc[i][j];

}

}

}

//交换权值 以及头和尾

void Swapn(Edge *edges,int i, int j)

{

int temp;

temp = edges[i].begin;

edges[i].begin = edges[j].begin;

edges[j].begin = temp;

temp = edges[i].end;

edges[i].end = edges[j].end;

edges[j].end = temp;

temp = edges[i].weight;

edges[i].weight = edges[j].weight;

edges[j].weight = temp;

}

//对权值进行排序 (选择排序法)

void sort(Edge edges[],MGraph *G)

{

int i,j,min;

for ( i = 0; i  (G-numEdges-1); i++)

    {

        min=i;

        for ( j = 老芹i + 1; j  G-numEdges; j++)

        {

            if (edges[min].weight  edges[j].weight)

            {

                min=j;

            }

        }

        if(i != min)

        {

            Swapn(edges, i, min);

        }

    }

printf("边的权值排序之后:\n");

for (i = 0; i  G-numEdges; i++)

{

printf("(%d, %d) %d\n", edges[i].begin, edges[i].end, edges[i].weight);

}

}

//查找连线顶点的尾部下标

int Find(int *parent, int f)

{

while ( parent[f]  0)

{

f = parent[f];

}

return f;

}

//生成最小生成树

void MiniSpanTree_Kruskal(MGraph G)

{

int i, j, n, m;

int k = 0;

int parent[MAXVEX]; //定义一数组用来判断边与边是否形成环路

Edge edges[MAXEDGE]; //定义边集数组,edge的结构为begin,end,weight,均为整型

//用来构建边集数组并排序

for ( i = 0; i  G.numVertexes-1; i++)

{

for (j = i + 1; j  G.numVertexes; j++)

{

if (G.arc[i][j]INF)

{

edges[k].begin = i;

edges[k].end = j;

edges[k].weight = G.arc[i][j];

k++;

}

}

}

sort(edges, G); //从小到大排序

for (i = 0; i  G.numVertexes; i++)

    {

        parent[i] = 0;

    }

printf("打印最小生成树:\n");

for (i = 0; i  G.numEdges; i++) //循环每一条边

{

n = Find(parent,edges[i].begin);

m = Find(parent,edges[i].end);

if (n != m) //假如n与m不等,说明此边没有与现有的生成树形成环路

{

parent[n] = m; //将此边的结尾顶点放入下标为起点的parent中

//表示此顶点已经在生成树集合中

printf("(%d, %d) %d\n", edges[i].begin, edges[i].end, edges[i].weight);

}

}

}

int main(void)

{

MGraph G;

CreateMGraph(G);

MiniSpanTree_Kruskal(G);

return 0;

}

[img]

数据结构题目

1.D

2.D

3.D

4.C

5.A

6.D

7.B

8.C

9.D

10.B

11.B

12.C

13.C

14.B

15.C

16

17.B

18.C

16题庆樱昌目有问题没答案

6题也有问题,颂兆是誉扒死循环

关于数据结构期末考试题和数据结构期末考试题及答案2022的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表