算法设计题
1.
设二叉树 bt 采纳二叉链表结构存储。试设计一个算法输出二叉树中所有非叶子结点,并求出非叶子结点的个
数。
【答案】
int count=0;
void algo2(BTNode
*bt){ if (bt){
if(bt->lchild || bt->rchild){
printf(bt->data);
count++
;
}
algo2(bt->lchild);
algo2(bt->rchild);
}
}
2.
阅读以下函数 arrange()
int arrange(int a[],int 1,int h,int x)
{i] ≥上,使所有 x 的元素均落在 a[i+1..h 上]
。
(2)int f(int b[],int n) 或 int f(int b[],int n)
{ {
int
p,;q int
p,;q
p=arrange(b,0-,n1,0); p=arrange(b,0
-,n1,1); q=
arrange(b,p+1-,n1,1); q=
arrange(b,0,p;,0) return
-q
p; return
-p
q;
} }
3.
假设线性表以带表头结点的循环单链表表示。试设计一个算法,在线性表的第 k 个元素前插入新元素 y。假设
表长小于 k,那么插在表尾。
【答案】
void
algo1(
LNode *h,int k,ElemType y)
{ q=h; P=h->next; j=1;
while( p!=h && j<k){
q=p; p=p->next; j+
+;
}
s=(LNode
*)malloc(sizeof(Lnode)); s-
>data=y;
q-
>next=s;
s-
>next=q;
}
4.
二叉排序树的类型概念如下:
typedef
struct
BSTNod∥e
{二叉排序树的结点
结构
int data; ∥数据域
评论0
最新资源