2023年安徽省数据要领高级

发布 2021-05-04 12:06:28 阅读 4976

1、设一棵树t中边的集合为,要求用孩子兄弟表示法(二叉链表)表示出该树的存储结构并将该树转化成对应的二叉树。2、连通图的生成树包括图中的全部n个顶点和足以使图连通的n-1条边,最小生成树是边上权值之和最小的生成树。故可按权值从大到小对边进行排序,然后从大到小将边删除。

每删除一条当前权值最大的边后,就去测试图是否仍连通,若不再连通,则将该边恢复。若仍连通,继续向下删;直到剩n-1条边为止。void spntree (adjlist g)

/用“破圈法”求解带权连通无向图的一棵最小代价生成树。

typedef struct node; /设顶点信息就是顶点编号,权是整型数node edge;

scanf( "d%d",&e,&n) ;输入边数和顶点数。

for (i=1;i<=e;i输入e条边:顶点,权值。

scanf("%d%d%d" ,edge[i].i ,&edge[i].j ,&edge[i].w);

for (i=2;i<=e;i++)按边上的权值大小,对边进行逆序排序。//测试下一条边edge[k],权值置0表示该边被删除k++;下条边}//while}//算法结束。

connect()是测试图是否连通的函数,可用图的遍历实现,3、二叉树的层次遍历序列的第一个结点是二叉树的根。实际上,层次遍历序列中的每个结点都是“局部根”。确定根后,到二叉树的中序序列中,查到该结点,该结点将二叉树分为“左根右”三部分。

若左、右子树均有,则层次序列根结点的后面应是左右子树的根;若中序序列中只有左子树或只有右子树,则在层次序列的根结点后也只有左子树的根或右子树的根。这样,定义一个全局变量指针r,指向层次序列待处理元素。算法中先处理根结点,将根结点和左右子女的信息入队列。

然后,在队列不空的条件下,循环处理二叉树的结点。队列中元素的数据结构定义如下:typedef struct

int lvl层次序列指针,总是指向当前“根结点”在层次序列中的位置int l,h中序序列的下上界。

int f层次序列中当前“根结点”的双亲结点的指针int lr1—双亲的左子树2—双亲的右子树}qnode;

bitree creat(datatype in,level,int n)

/由二叉树的层次序列level[n]和中序序列in[n]生成二叉树。n是二叉树的结点数。

qnode s,qq是元素为qnode类型的队列,容量足够大init(q); int r=0; /r是层次序列指针,指向当前待处理的结点。

bitree p=(bitree)malloc(sizeof(binode生成根结点p->data=level[0]; p->lchild=null; p->rchild=null; /填写该结点数据。

for (i=0; iif (i==0) /根结点无左子树,遍历序列的1—n-1是右子树。

else if (i==n-1) /根结点无右子树,遍历序列的1—n-1是左子树。

else //根结点有左子树和右子树。

左子树有关信息入队列 右子树有关信息入队列}

while (!empty(q)) 当队列不空,进行循环,构造二叉树的左右子树。

else if (i==

p->rchild=null; /处理无右子女。

enqueue(q,s);}

else//结束while (!empty(q))return(p);}算法结束。

4、设指针变量p指向双向链表中结点a,指针变量q指向被插入结点b,要求给出在结点a的后面插入结点b的操作序列(设双向链表中结点的两个指针域分别为llink和rlink)。5、设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左,右两个儿子的结点个数n2;只有非空左儿子的个数nl;只有非空右儿子的结点个数nr和叶子。

结点个数n0。n2、nl、nr、n0都是全局量,且在调用count(t)之前都置为 struct node

int data; struct node *lchild,*rchild;}node;int n2,nl,nr,n0;void count(node *t)

if (t->lchild!=null) if (1)__n2++;else nl++;else if (2)__nr++;else (3)__

if(t->lchild!=null)(4)__if (t->rchild!=null) (5)__

26.树的先序非递归算法。void example(b)btree *b;

btree *stack[20], p;int top;if (b!=null)

top=1; stack[top]=b;while (top>0)

p=stack[top]; top--;printf(“%d”,p->data);if (p->rchild!=null)

if (p->lchild!=null)(3)__4)__

2023年安徽省数据总结加强

1 设一组有序的记录关键字序列为 13,18,24,35,47,50,62,83,90 查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。2 我们可用 破圈法 求解带权连通无向图的一棵最小代价生成树。所谓 破圈法 就是 任取一圈,去掉圈上权最大的边 反复执行这...

2019安徽省数据结构考

1 线性表的链接实现有利于 a 运算。a 插入b 读元素。c 查找d 定位。2 设单链表中指针p指向结点m,若要删除m之后的结点 若存在 则需修改指针的操作为 a a p next p next next b p p next c p p next nextd p next p 3 向一个栈顶指针为...

安徽省高级焊工理论试题

本卷共分为1大题50小题,作答时间为180分钟,总分100分,60分及格。一 单项选择题 共 25 题,每题 2 分,每题的备选项中,只有 1 个事最符合题意 1 fe c平衡图中s点为共析点,碳的质量分数为0.8 成分在s点钢为共析钢,其组织 a 珠光体 铁素体。b 珠光体 渗碳体。c 全部为铁素...