数据结构算法设计题复习题.doc
- 文档编号:153310
- 上传时间:2022-10-04
- 格式:DOC
- 页数:11
- 大小:60KB
数据结构算法设计题复习题.doc
《数据结构算法设计题复习题.doc》由会员分享,可在线阅读,更多相关《数据结构算法设计题复习题.doc(11页珍藏版)》请在冰豆网上搜索。
算法设计题
1.设二叉树bt采用二叉链表结构存储。
试设计一个算法输出二叉树中所有非叶子结点,并求出非叶子结点的个数。
【答案】
intcount=0;
voidalgo2(BTNode*bt){
if(bt){
if(bt->lchild||bt->rchild){
printf(bt->data);
count++;
}
algo2(bt->lchild);
algo2(bt->rchild);
}
}
2.阅读下列函数arrange()
intarrange(inta[],int1,inth,intx)
{//1和h分别为数据区的下界和上界
inti,j,t;
i=1;j=h;
while(i while(i while(i if(i {t=a[j];a[j]=a[i];a[i]=t;} } if(a[i] elsereturni-1; } (1)写出该函数的功能; (2)写一个调用上述函数实现下列功能的算法: 对一整型数组b[n]中的元素进行重新排列,将所有负数均调整到数组的低下标端,将所有正数均调整到数组的高下标端,若有零值,则置于两者之间,并返回数组中零元素的个 数。 【答案】 (1)该函数的功能是: 调整整数数组a[]中的元素并返回分界值i,使所有<x的元素均落在a[1..i]上,使所有≥x的元素均落在a[i+1..h]上。 (2)intf(intb[],intn)或intf(intb[],intn) {{ intp,q;intp,q; p=arrange(b,0,n-1,0);p=arrange(b,0,n-1,1); q=arrange(b,p+1,n-1,1);q=arrange(b,0,p,0); returnq-p;returnp-q; }} 3.假设线性表以带表头结点的循环单链表表示。 试设计一个算法,在线性表的第k个元素前插入新元素y。 假如表长小于k,则插在表尾。 【答案】 voidalgo1(LNode*h,intk,ElemTypey){ q=h;P=h->next;j=1; while(p! =h&&j q=p;p=p->next;j++; } s=(LNode*)malloc(sizeof(Lnode)); s->data=y; q->next=s; s->next=q; } 4.二叉排序树的类型定义如下: typedefstructBSTNode{∥二叉排序树的结点结构 intdata;∥数据域 structBSTNode*lchild,*rchild;∥左、右孩子指针 }BSTNode,*BSTree; 设计递归算法,统计一棵二叉排序树T中值小于a的结点个数。 【答案】 intf34(BSTreeroot) { intcount; BSTNode*p; p=root;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 设计 复习题
![提示](https://static.bdocx.com/images/bang_tan.gif)