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 ...