请教数据结构与算法的题 急~~

(需要过程)
1. 依次输入表(30,15,28,20,24,10,12,68,35,50,46,55)中的元素,请画出生成的一株二元查找树。

2.分析下列程序的运行时间:
(A)void matmpy(int n)
{int i, j, k;
for(i=0; i <=n-1; i++)
for(j=0; j <=n-1; j++)
{C[i][j]=0;
for(k=0; k <=n-1; k++)
C[i][j]=C[i][j]+A[i][k]*A[k][j];
}
}
(B)void BUBBLE(int A[n])
{int i, j, temp;
for(i=0; i <n-1; i++)
for ( j=n-1;j>=i+1;j-- )
if(A[j-1]>A[j])
{temp=A[j-1];
A[j-1]=A[j];
A[j]=temp;
}
}

3. 给定一个关键字序列{24,19,32,43,38,6,13,22},请写出快速排序第一趟的结果。
4. 数据结构和抽象数据型的区别与联系。
5. 试说明在线索二元树中,树空和树非空时,树的头结点HEAD中各域的值:
树空:HEAD->lchild=
HEAD->rchild=
HEAD->ltag=
HEAD->rtag=
树非空:HEAD->lchild=
HEAD->rchild=
HEAD->ltag=
HEAD->rtag=
6.栈存放在数组A[m]中,栈底位置是m-1。试问:
(A)栈空的条件是什么?
(B)栈满的条件是什么?

7. 设桶数为m的散列表,当用质数除余法构造散列函数时的公式为 hash(key)=key%p,试说明公式中对p的要求。
8. 试给出“折半查找”算法。

9. 用非递归函数实现二元树的中根遍历算法。访问结点时打印出该结点的DATA之值。

10. 下列程序试图删除在线性表L中出现的所有关键字为x的结点,问该程序是否能在所有情况下完成预期的工作;如果不能,则修改它,并说明原因。
void DeleteL(elementtype x, LIST &L)
{position p;
p=FIRST(L);
while(p!=END(L))
{if(RETRIEVE(p, L)= =x)
DELETE(p, L);
p=next(p, L);
}
}

11. 在快速分类算法中,需要将某个关键字作为基准元素,对所要排序的元素划分成左右两部分。试给出求取该基准关键字的算法,要求该关键字为该组关键字中最左两个不相同的关键字中最大者。
12. 假设消息是由字符a、b、c、d、e组成的,各字符出现的概率分别是0.12、0.4、0.15、0.08、0.25。用一个二进制数字串对每个字符串编码,如何编码使平均编码长度最短。请给出编码过程和平均编码长度。
13. 写出一个将二元树中每一个结点的左右子树交换的算法。

第1个回答  2009-04-02

见图

本回答被提问者采纳