2023年广东省数据理论加强

发布 2022-01-10 09:58:28 阅读 4859

1、设一棵树t中边的集合为,要求用孩子兄弟表示法(二叉链表)表示出该树的存储结构并将该树转化成对应的二叉树。

2、数组a和b的元素分别有序,欲将两数组合并到c数组,使c仍有序,应将a和b拷贝到c,只要注意a和b数组指针的使用,以及正确处理一数组读完数据后将另一数组余下元素复制到c中即可。

void union(int a,b,c,m,n)

/整型数组a和b各有m和n个元素,前者递增有序,后者递减有序,本算法将a和b归并为递增有序的数组c。

i=0; j=n-1; k=0;//i,j,k分别是数组a,b和c的下标,因用c描述,下标从0开始while(i=0)

if(a[i]while(iwhile(j>=0) c[k++]b[j--]

算法结束。4、要求二叉树按二叉链表形式存储。15分。

1)写一个建立二叉树的算法。(2)写一个判别给定的二叉树是否是完全二叉树的算法。bitree creat建立二叉树的二叉链表形式的存储结构。

elemtype x;bitree bt;

scanf(“%d”,&x); 本题假定结点数据域为整型。

if(x==0) bt=null;

else if(x>0)

bt=(binode *)malloc(sizeof(binode));

bt->data=x; bt->lchild=creat();bt->rchild=creat();

else error(“输入错误”);

return(bt);

//结束 bitree

int judgecomplete(bitree bt) /判断二叉树是否是完全二叉树,如是,返回1,否则,返回0

int tag=0; bitree p=bt, q;q是队列,元素是二叉树结点指针,容量足够大。

if(p==null) return (1);

queueinit(q); queuein(q,p); 初始化队列,根结点指针入队。

while (!queueempty(q))

p=queueout(q出队。

if (p->lchild &&tag) queuein(q,p->lchild); 左子女入队。

else /judgecomplete

3、若第n件物品能放入背包,则问题变为能否再从n-1件物品中选出若干件放入背包(这时背包可放入物品的重量变为s-w[n])。若第n件物品不能放入背包,则考虑从n-1件物品选。

若干件放入背包(这时背包可放入物品仍为s)。若最终s=0,则有一解;否则,若s<0或虽然s>0但物品数n<1,则无解。

1)s-w[n],n-1 //knap(s-w[n],n-1)=true

2)s,n-1knap←knap(s,n-1)

2023年广东省数据概述加强

1 3分 给出适用于计数排序的数据表定义 2 7分 使用pascal或c语言编写实现计数排序的算法 3 4分 对于有n个记录的表,关键码比较次数是多少?4 3分 与简单选择排序相比较,这种方法是否更好?为什么?4 本题要求建立有序的循环链表。从头到尾扫描数组a,取出a i 0 ilinkedlist...

2023年湖南省数据理论入门

1 设一棵树t中边的集合为,要求用孩子兄弟表示法 二叉链表 表示出该树的存储结构并将该树转化成对应的二叉树。2 给定n个村庄之间的交通图,若村庄i和j之间有道路,则将顶点i和j用边连接,边上的wij表示这条道路的长度,现在要从这n个村庄中选择一个村庄建一所医院,问这所医院应建在哪个村庄,才能使离医院...

2023年河南省数据理论章程

1 假设k1,kn是n个关键词,试解答 试用二叉查找树的插入算法建立一棵二叉查找树,即当关键词的插入次序为k1,k2,kn时,用算法建立一棵以llink rlink 链接表示的二叉查找树。2 若第n件物品能放入背包,则问题变为能否再从n 1件物品中选出若干件放入背包 这时背包可放入物品的重量变为s ...