导航:首页 > 源码编译 > 数据结构算法题

数据结构算法题

发布时间:2022-01-12 13:12:21

1. 数据结构算法

int BTreeCount(BinTreeNode* BT, char x){

if(BT){
if(BT->data>x) return BTreeCount(BT->left,x)+BTreeCount(BT->right,x)+1;
else return BTreeCount(BT->left,x)+BTreeCount(BT->right,x);
}}

2. 数据结构与算法题

数据结构复习
重点是了解数据结构的逻辑结构、存储结构、数据的运算三方面的概念及相互关系,难点是算法复杂度的分析方法。
需要达到<识记>层次的基本概念和术语有:数据、数据元素、数据项、数据结构。特别是数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系。数据结构的两大类逻辑结构和四种常用的存储表示方法。
需要达到<领会>层次的内容有算法、算法的时间复杂度和空间复杂度、最坏的和平均时间复杂度等概念,算法描述和算法分析的方法、对一般的算法要能分析出时间复杂度。
对于基本概念,仔细看书就能够理解,这里简单提一下:
数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,有时一个数据元素可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。如整数这个集合中,10这个数就可称是一个数据元素.又比如在一个数据库(关系式数据库)中,一个记录可称为一个数据元素,而这个元素中的某一字段就是一个数据项。

数据结构的定义虽然没有标准,但是它包括以下三方面内容:逻辑结构、存储结构、和对数据的操作。这一段比较重要,我用自己的语言来说明一下,大家看看是不是这样。

比如一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多字段(数据项)组成。那么这张表的逻辑结构是怎么样的呢? 我们分析数据结构都是从结点(其实也就是元素、记录、顶点,虽然在各种情况下所用名字不同,但说的是同一个东东)之间的关系来分析的,对于这个表中的任一个记录(结点),它只有一个直接前趋,只有一个直接后继(前趋后继就是前相邻后相邻的意思),整个表只有一个开始结点和一个终端结点,那我们知道了这些关系就能明白这个表的逻辑结构了。

而存储结构则是指用计算机语言如何表示结点之间的这种关系。如上面的表,在计算机语言中描述为连续存放在一片内存单元中,还是随机的存放在内存中再用指针把它们链接在一起,这两种表示法就成为两种不同的存储结构。(注意,在本课程里,我们只在高级语言的层次上讨论存储结构。)

第三个概念就是对数据的运算,比如一张表格,我们需要进行查找,增加,修改,删除记录等工作,而怎么样才能进行这样的操作呢? 这也就是数据的运算,它不仅仅是加减乘除这些算术运算了,在数据结构中,这些运算常常涉及算法问题

3. 数据结构算法题:

无向图:
先画出全部的顶点,并用v1~v6依次标注,顶点的位置不重要,但可以配合边的情况排布得尽量美观;
然后,对于每一个包含在E中的顶点对,用一条边连接两个顶点。
邻接表:
由于是无向图,而且E中也没有给出边的权值,所以邻接表实际上就是把E中的顶点对抄一遍,如:
V1 V2
V1 V4
……

4. 数据结构与算法题需要回答

《数据结构与算法》模拟题
一、填空题:(共15分)(每空一分)
按照排序时,存放数据的设备,排序可分为<1> 排序和<2> 排序。内部排序和外部排序
图的常用的两种存储结构是<3> 和<4> 。邻接矩阵和邻接表
数据结构中的三种基本的结构形式是<5> 线性结构 和<6> 树型结构 、图型结构<7> 。
一个高度为6的二元树,最多有<8> 63 个结点。
线性查找的时间复杂度为:<9> O(n^2) ,折半查找的时间复杂度为:<10> O(nlogn) 、堆分类的时间复杂度为:<11> O(nlogn) 。
在采用散列法进行查找时,为了减少冲突的机会,散列函数必须具有较好的随机性,在我们介绍的几种散列函数构造法中,随机性最好的是<12> 随机数 法、最简单的构造方法是除留余数法<13> 。
线性表的三种存储结构是:数组、<14> 链表 、<15> 静态链表 。
二、回答下列问题:(共30分)
现有如右图的树,回答如下问题:看不见图
根结点有:
叶结点有:
具有最大度的结点:
结点的祖先是:
结点的后代是:
栈存放在数组A[m]中,栈底位置是m-1。试问:
栈空的条件是什么?top=m-1
栈满的条件是什么?top=-1
数据结构和抽象数据型的区别与联系:
数据结构(data structure)—是相互之间存在一种或多种特定关系的数据元素的集合。数据元素相互之间的关系称为结构。
抽象数据类型(ADT):是指一个数学模型(数据结构)以及定义在该模型(数据结构)上的一组操作。

5. 一道数据结构题目 算法

过程的目的就是使得x,y,z,成为递减的顺序
首先判断x,y,如果x,y不是递减,即x<y,那么交换x和y,这样就保证了x,y是递减的顺序,即x>=y
然后判断y和z的顺序,如果y和z已经保证递减顺序,也就是y>=z的话,那么什么也不用做,因为这是x,y,z肯定是递减关系了
如果y<z的话,那就要看x和z谁大谁小,如果x比较大,那么顺序就是x,z,y,所以要交换z和y。如果z比较大,那么顺序就是z,x,y,那么三个数都要变:y=x,x=z,z=y

当然所有的交换都要引入临时变量temp
另外,从小到大很简单,只要输出的时候反过来就可以了,本来是顺序输出x,y,z,现在是顺序输出z,y,x

6. 数据结构关于折半算法的题

修改了4处:

#include<stdio.h>

#include<stdlib.h>

#defineN15

intBinSrch(intl[],intk)

{

intlow,high,mid;

low=1;

high=10;

while(low<=high)

{

mid=(low+high)/2;

if(k==l[mid])

return(mid);

elseif(k<l[mid])

high=mid-1;

else

low=mid+1;

}

return(low);/*第1处修改*/

}

main()

{

intq,p,i,a[N];

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

a[i]=i;

printf("请输入要插入的值:");

scanf("%d",&p);

q=BinSrch(a,p);

if(a[q]<=p)/*a[q]是函数中弹出来的下标的相应值*/

{

for(i=10;i>=q;i--)/*第2处修改*/

a[i+1]=a[i];/*第3处修改*/

a[q]=p;

}

else

{

for(i=10;i>=q;i--)/*第4处修改*/

a[i+1]=a[i];

a[q]=p;

}

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

printf("%d",a[i]);

}

运行测试:

阅读全文

与数据结构算法题相关的资料

热点内容
求知课堂python2020 浏览:260
kafka删除topic命令 浏览:759
phpsql单引号 浏览:86
英雄联盟压缩壁纸 浏览:452
办公app需要什么服务器 浏览:628
安卓服务器怎么获得 浏览:808
空调压缩机冷媒的作用 浏览:781
淘宝app是以什么为利的 浏览:657
java提取图片文字 浏览:924
我的世界手机版指令复制命令 浏览:35
java判断字符串为数字 浏览:926
androidrpc框架 浏览:490
云服务器essd和ssd 浏览:524
家用网关的加密方式 浏览:3
怎么从ppt导出pdf文件 浏览:973
换汽车空调压缩机轴承 浏览:845
平板怎么登录安卓端 浏览:197
图像拼接计算法 浏览:257
怎么打开饥荒服务器的本地文件夹 浏览:293
usb扫描枪编程 浏览:675