数据结构c语言版题库

急需数据结构C语言版(清华大学出版社)的期末考试试题及答案

《数据结构》期末考试试卷( A )

一、 选择题(每小题2分,共24分)

1.计算机识别、存储和加工处理的对象被统称为( A )

A.数据 B.数据元素

C.数据结构 D.数据类型

2.栈和队列都是( A )

A.限制存取位置的线性结构 B.顺序存储的线性结构

C.链式存储的线性结构 D.限制存取位置的非线性结构

3.链栈与顺序栈相比,比较明显的优点是( D )

A.插入操作更加方便 B.删除操作更加方便

C.不会出现下溢的情况 D.不会出现上溢的情况

4.采用两类不同存储结构的字符串可分别简称为( B )

A.主串和子串 B.顺序串和链串

C.目标串和模式串 D.变量串和常量串

5. 一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是:B

A. 110 B .108

C. 100 D. 120

6.串是一种特殊的线性表,其特殊性体现在:B

A.可以顺序存储 B .数据元素是一个字符

C. 可以链接存储 D. 数据元素可以是多个字符

7.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为: C

A. 2h B .2h-1

C. 2h+1 D. h+1

软件开发网

8.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。这里,我们把 由树转化得到的二叉树叫做这棵树对应的二叉树。下列结论哪个正确? A

A. 树的先根遍历序列与其对应的二叉树的先序遍历序列相同

B .树的后根遍历序列与其对应的二叉树的后序遍历序列相同

C. 树的先根遍历序列与其对应的二叉树的中序遍历序列相同

D. 以上都不对

9.一个有n个顶点的无向图最多有多少边?C

A. n B .n(n-1)

C. n(n-1)/2 D. 2n

10.在一个图中,所有顶点的度数之和等于所有边数的多少倍?C

A. 1/2 B .1

C. 2 D. 4

11.当在二叉排序树中插入一个新结点时,若树中不存在与待插入结点的关键字相同的结点,且新结点的关键字小于根结点的关键字,则新结点将成为( A )

A.左子树的叶子结点 B.左子树的分支结点

C.右子树的叶子结点 D.右子树的分支结点

软件开发网

12.对于哈希函数H(key)=key%13,被称为同义词的关键字是( D )

A.35和41 B.23和39

C.15和44 D.25和51

二、已知某棵二叉树的前序遍历结果为A,B,D,E,G,C,F,H,I,J,其中中序遍历的结果为D,B,G,E,A,H,F,I,J,C。请画出二叉的具体结构。(注意要写出具体步骤)(10分)

原理见课本128页

三、有图如下,请写出从顶点c0出发的深度优先及宽度优先遍历的结果。(10分)

深度优先;C0-C1-C3-C4-C5-C2

宽度优先:C0-C1-C2-C3-C4-C5

四、有图如下,按Kruskal算法求出其最小生成树。要求写出完整的步骤。(10分)

原理见课本250页

五、给定线性表(12,23,45,66,76,88,93,103,166),试写出在其上进行二分查找关键字值12,93,166的过程。并写出二分查找的算法。(20分)

0 1 2 3 4 5 6 7 8

12 23 45 66 76 88 93 103 166

过程:

mid=(0+8)/2=4

high=3,low=0 mid=1

high=0,low=0 mid=0(找到12)

high=8,low=5,mid=6(找到93)

high=8,low=7,mid=7

high=8 low=8 mid=8

算法:见课本84页上

六、知单链表的结点结构为

Data next

下列算法对带头结点的单链表L进行简单选择排序,使得L中的元素按值从小到大排列。

请在空缺处填入合适的内容,使其成为完整的算法。 (可用文字说明该算法的基本思想及执行的过程,10分)

void SelectSort(LinkedList L)

{

LinkedList p,q,min;

DataType rcd;

p= (1) ;

while(p!=NULL) {

min=p;

q=p-next;

while(q!=NULL){

if( (2) )min=q;

q=q-next;

}

if( (3) ){

rcd=p-data;

p-data=min-data;

min-data=rcd;

}

(4) ;

}

}

本题不会。嘿嘿。。。。

七、一个完整的算法应该具有哪几个基本性质?分别简要说明每一性质的含意。(5分)

输入:

四个基本性质:1.输入:有零个或多个有外部提供的量作为算法的输入

2:输出:算法产生至少一个量作为输出

3.:确定性:组成算法的每条指令是清晰的,无歧异的。

4.:有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的

八、何谓队列的”假溢”现象?如何解决?(5分)

队列的假溢现象是指数组实现的顺序队列中,队尾指针已到达数组的下表上界产生上溢而队头指针之前还有若干 空间闲置的现象。解决的办法之一是利用循环队列技术使数组空间的首尾相连。

九、说明并比较文件的各种物理结构。(6分)

数据结构c语言版题库

一道数据结构(C语言)编程题

楼主的问题要很麻烦啊。我记得第二题好像是东南大学99年或2000年的一道研究生测试题了。

就只给出算法了:

//在用邻接表方式存储的无向图g中,删除边(i,j)

{p=g[i].firstarc;

pre=null;

//删顶点i

的边结点(i,j),pre是前驱指针

while

(p)

if

(p-adjvex==j)

{if(pre==null)g[i].firstarc=p-next;else

pre-next=p-next;free(p);}//释放结点空间。

else

{pre=p;

p=p-next;}

//沿链表继续查找

p=g[j].firstarc;

pre=null;

//删顶点j

的边结点(j,i)

while

(p)

if

(p-adjvex==i)

{if(pre==null)g[j].firstarc=p-next;else

pre-next=p-next;free(p);}//释放结点空间。

else

{pre=p;

p=p-next;}

//沿链表继续查找

}//

DeletEdge

算法讨论:

算法中假定给的i,j

均存在,否则应检查其合法性。若未给顶点编号,而给出顶点信息,则先用顶点定位函数求出其在邻接表顶点向量中的下标i和j。

关于数据结构(C语言)的几个题

1.

随意画几个二叉树就知道了,这里空链域用ε表示,数一数结点个数与ε个数就知道是n+1了

2.

具体过程在图中给出。

3.

第一步将数据(假设为e)放入s的data中;

第二步s的后继指向q的后继节点;

第三步q的后继指向s

4.

查找72只需2步:

第一步:设立low、high与mid指针,将72与mid指向的值即48比较;

第二部:72比48大,low指向mid+1,重新算出mid,指向72,再与72比较,即查找成功。

最多比较次数参考严蔚敏《数据结构》第九章 查找 220页。

5.

例如图中这棵树,假设i=2,2i=4不大于n,2i+1=5大于n,所以2这个结点没有右子树。

6.

顺序栈的类型定义:

typedef struct{

    char *base;        //也可用ElemType,只要定义了就行

    char *top;

    int stacksize;

}SqStackTp;        //注意名字要和主函数里的统一

运行结果:

ABCDEFGHIJKLM

MLKJIHGFEDCBA

结果详解:

在这里将’A’到’A’+12=’M’进栈同时输出

for(ch=’A’;ch=’A’+12;ch++)

{  Push(sq,ch);

printf(“%c”,ch);

}

在这里将’A’到’M’出栈同时输出

while(!EmptyStack(sq))

{  Pop(sq,ch);

printf(“c”,ch);

}  printf(“\n”);

由于栈是后进先出,所以就有这样的结果

7.

void converse(int n,int d){

    SqStack S;        //新建一个栈

    InitStack(S);     //初始化栈

    int k,e;

    while(n0){

        k=n%d;

        push(S,k);

        n=n/d;

    }//将余数进栈

    while(S.top!=S.base){

        pop(S,e);

        printf(“%1d”,e);

    }//输出结果

}

8.

先序遍历:ABCDEF

中序遍历:BCDAFE

后序遍历:DCBFEA

数据结构(C语言版)题目,大神来

Prim算法:

int Map[10][10];

int dis[10],vis[10],F[10];

void Prim(){

    memset(vis,0,sizeof(vis));

    int ans=0; vis[1] = 1;

    for(int i=2;i=7;i++) { dis[i] = Map[i][1] != -1? Map[i][1]:INF; F[i] = 1; }

    for(int i = 2;i=7;i++){

        int Min=INF,p;

        for( int j = 1;j=7; j++) if(!vis[j]  dis[j]Min)

            Min=dis[ p=j ];

        vis[p]=1; ans+=Min;

        cout”加边:(“p”,”F[p]”) 边权:”Map[p][F[p]]endl;

        for(int j = 1; j = 7; j++) if(!vis[j]  Map[p][j] != -1)

            if( Map[p][j]dis[j]){

                dis[j]=Map[p][j];

                F[j]=p;

            }

    }

    cout”总权值:”ansendl;

}

int main(){

    memset(Map,-1,sizeof(Map));

    while( true ){

        int a,b; cinab; if( a==-1  b==-1) break;

        int c; cinc; Map[a][b] = Map[b][a] = c;

    }

    Prim();

    return 0;

}

输入及运行结果:

输入:

1 6 6

1 2 20

1 7 19

6 7 17

6 5 9

2 7 17

5 7 19

2 3 16

7 3 15

7 4 20

5 4 24

3 4 13

-1 -1

结果:

加边:(6,1) 边权:6

加边:(5,6) 边权:9

加边:(7,6) 边权:17

加边:(3,7) 边权:15

加边:(4,3) 边权:13

加边:(2,3) 边权:16

总权值:76

Kruskal算法:

struct Edge{

    int u,v,w;

    bool operator  (const Edge a)const{

        return wa.w;

    }

};

Edge edge[100]; int tot = 0;

int pre[100];

int Find( int x ){

    return x==pre[x]? x:pre[x] = Find(pre[x]);

}

void Kruskal(){

    for( int i=0; i=7; i++) pre[i] = i;

    sort(edge,edge+tot);

    int cnt = 1,ans=0;

    for(int i=0;itot;i++){

        if(cnt==7) break;

        int u=edge[i].u, v= edge[i].v, w=edge[i].w;

        int fu=Find(u), fv=Find(v);

        if(fu==fv) continue;

        pre[fu]=fv; cnt++; ans+=w;

        cout”加边(”u”,”v”) “”边权:”wendl;

    }

    cout”总的权值:”ansendl;

}

int main(){

    while( true ){

        int a,b; cinab; if( a==-1  b==-1) break;

        int c; cinc;  edge[tot++] = (Edge){a,b,c};

    }

    Kruskal();

    return 0;

}

输入及运行结果:

输入:

1 6 6

1 2 20

1 7 19

6 7 17

6 5 9

2 7 17

5 7 19

2 3 16

7 3 15

7 4 20

5 4 24

3 4 13

-1 -1

结果:

加边(1,6) 边权:6

加边(6,5) 边权:9

加边(3,4) 边权:13

加边(7,3) 边权:15

加边(2,3) 边权:16

加边(6,7) 边权:17

总的权值:76

数据结构(c语言版)题目求答案

3.28

void InitCiQueue(CiQueueQ)//初始化循环链表表示的队列Q

{

Q=(CiLNode*)malloc(sizeof(CiLNode));

Q-next=Q;

}//InitCiQueue

voidEnCiQueue(CiQueueQ,int x)//把元素x插入循环列表表示的队列Q,Q指向队尾元素,Q-next指向头结点,Q-next-next指向队尾元素

{

p=(CiLNode*)malloc(sizeof(CiLNode));

p-data=x;

p-next=Q-next;//直接把p加在Q的后面

Q-next=p;

Q=p;//修改尾指针

}

Status DeCiQueue(CiQueueQ,int x)//从循环链表表示的队列Q头部删除元素x

{

if(Q==Q-next)return INFEASIBLE;//队列已空

p=Q-next-next;

x=p-data;

Q-next-next=p-next;

free(p);

rturn OK;

}//DeCiqueue

3.31

int Palindrome_Test()

{

InitStack(S);InitQueue(Q);

while((c=getchar())!=’@’)

{

Push(S,c);EnQueue(Q,c);

}

while(!StackEmpty(S))

{

pop(S,a);DeQueue(Q,b);

if(a!=b)return ERROR;

}

return OK;

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月28日 21:38:29
下一篇 2024年3月28日 21:43:41

相关推荐

  • 数据结构c语言版第10章习题答案,数据结构c语言版第二版课后答案严蔚敏第十章

    数据结构(C语言版)课后习题,求大佬解答? 1、源码:includestdio.h includestdlib.h typedef int ElemType;struct BTreeNode { ElemType data;struct BTreeNode* left;struct BTreeNode* right;};//输出二叉树,可在前序遍历的基础上修…

    2024年5月23日
    3600
  • 传智播客javaee,传智播客JavaEE题库答案

    北京的黑马程序员训练营怎么样? 总体而言,黑马程序员是一家颇具实力的IT职业培训机构,其多元化的课程体系、严格筛选的教师队伍以及完善的就业服务体系,都受到了学员的一致好评。 黑马程序员培训机构挺好的。黑马程序员是传智教育旗下高端IT教育品牌,成立至今以高品质教学质量赢得好口碑,为企业输送了大批优质IT人才,致力于培养高级软件工程师。现已开设10余个精品热门学…

    2024年5月23日
    4600
  • 网络安全知识综合题库,网络安全知识综合题库答案

    网络安全知识竞答题及答案 守护青春网络有你2022全国大学生网络安全知识竞赛题库及答案 小张一天收到一个陌生电话,自称是公安机关民警,说小张涉嫌诈骗洗钱犯罪,要立刻将钱转入一个安全审查账户,否则就去抓他。小张应该赶紧转过去。 C.云服务商和客户共同承担(正确答案)D.其他组织承担(正确答案)即使对同等安全能力水平的云服务商,其实现安全要求的方式也可能会有差异…

    2024年5月23日
    4600
  • 甘肃网络安全知识竞赛题,网络安全知识竞赛题库及答案

    小学生安全知识网络竞赛试题附答案 去爬山哪里要带饮用水,到时候找点山泉水喝喝更清甜。( )50、郊游时发生突发事件,要镇定,服从老师指挥,尽快到安全地带。( )选择题。 选择题。(把正确答案的题号填入括号内) 每年全国的“中小学生安全教育日”是在( )月份最后一周的星期一。A A、三 B、六 C、九 D、十 今年“全国中小学生安全教育日”活动的主题是( )。…

    2024年5月23日
    6800
  • 网络安全知识题库300题,网络安全知识问答题及答案

    网络安全单项选择题「附答案」 1、正确答案: B 我的答案:B 为了保证计算机信息安全,通常使用( ),以使计算机只允许用户在输入正确的保密信息时进入系统。A、口令B、命令C、密码D、密钥正确答案: A 我的答案:C 对企业网络最大的威胁是()。 2、)单选题,共 25 题,每题 0 分,共 100.0 分 1 单选题 (0 分) 三重生态观昭示我们,网络安…

    2024年5月23日
    4300
  • 灞桥区中小学网络安全知识,2021中小学生网络安全知识竞赛题库

    中学生上网安全知识有哪些? 规划使用网络时间。青少年在使用网络时,要规划好上网时间;比如,周一到周五建议在晚上使用网络,上网时间一个小时以内;周六周日不用上学,上网时间可以适当长些,但上网时间也不能过长,一般2小时为宜。 使用网络的时候,应该在电脑上设置安全防火墙,可以使用防火墙来帮助保护您的计算机。使用电脑或者手机,应先下载一个杀毒软件,杀毒软件也应该进行…

    2024年5月23日
    5700
  • 公需科目网络安全知识题库,2020年公需科目网络信息安全考试试题及答案

    网络安全知识竞答题及答案 守护青春网络有你2022全国大学生网络安全知识竞赛题库及答案 小张一天收到一个陌生电话,自称是公安机关民警,说小张涉嫌诈骗洗钱犯罪,要立刻将钱转入一个安全审查账户,否则就去抓他。小张应该赶紧转过去。 C.云服务商和客户共同承担(正确答案)D.其他组织承担(正确答案)即使对同等安全能力水平的云服务商,其实现安全要求的方式也可能会有差异…

    2024年5月23日
    3800
  • c语言二叉树结构声明,c语言数据结构二叉树

    C语言二叉树定义 1、二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆。 2、二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父…

    2024年5月23日
    4400
  • excel题库含答案,excel试题库包含答案

    excel操作试题「附解答」 1、在Excel 2003中,添加边框、颜色操作中,假设用6位二进制来保存颜色,那么可供选择的颜色有___种。答案: 1:6 Excel 2003中,添加边框、颜色操作中,在单元格格式中,选择___选项卡。 2、excel基本操作试题「附答案」操作题 要求:设置当前工作表中单元格的行高为:12,列宽为:5。点格式,点行,点行高,…

    2024年5月23日
    4900
  • 网络安全知识练习题,网络知识安全题库

    校园网络安全知识竞赛测试题 面对“网络审判”现象,作为普通网民,我们应该在实际生活中( )A. 提高网络素养,理性发表意见B. 对网络事件漠不关心C. 义愤填膺,助力热点事件“上头条” D. 不上网 无线网络存在巨大安全隐患。 守护青春网络有你2022全国大学生网络安全知识竞赛题库及答案 小张一天收到一个陌生电话,自称是公安机关民警,说小张涉嫌诈骗洗钱犯罪,…

    2024年5月23日
    7400

发表回复

登录后才能评论



关注微信