数据结构算法题(含答案)

数据结构算法题(含答案)

ID:13122849

大小:39.00 KB

页数:4页

时间:2018-07-20

数据结构算法题(含答案)_第1页
数据结构算法题(含答案)_第2页
数据结构算法题(含答案)_第3页
数据结构算法题(含答案)_第4页
资源描述:

《数据结构算法题(含答案)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1、在数组A[1..n]中查找值为K的元素,若找到则输出其位置i(1<=i<=n),否则输出0作为标志。intlocate(dataytpeA[1..n],dateytpek){i=n;while((I<=n)&&(A[i]!=k))I++;if(I<=n)return(i);elsereturn(o);}2、试编写在带头结点的单链表上实现线性表基本运算LOCATE(L,X)、find(L,i)、INSERT(L,X,i)和DELETE(L,i)的算法。(1)定位LOCATE(L,X)intlocate_lklist(lklisthead

2、,datatypex)/*求表head中第一个值等于x的的序号,不存在这种结点时结果为0*/{p=head->next;j=1;/*置初值*/while((p!=NULL)&&(p->data!=x)){p=p->next;j++}/*未达表结点又未找到值等于X的结点时经,继续扫描*/if(p->data==x)return(j);elsereturn(0);}(2)按序号查找find(L,i)lklistfind_lklist(lklisthead,inti);{j=1;p=head->next;while((j<1)&&(p!=NUL

3、L)){p=p->next;j++}if(i==j)return(p);elsereturn(NULL);}(3)插入INSERT(L,X,i)voidinsert_lklist(lklisthead,datatypex,intI)/*在表haed的第i个位置上插入一人以x为值的新结点*/{p=find_lklist(head,i-1);/*先找第i-1个结点*/if(p==NULL)error(“不存在第i个位置”)/*若第i-1个结点不存在,退出*/else{s=malloc(size);s->data=x/*否则生成新结点*/s->

4、next=p->next/*结点*p在链域值传给结点*s的链域*/p->next=s;/*修改*p的链域*/}}(4)删除DELDTE(L,i)voiddelete_lklist(lklisthead,inti)/*删除表head的第i个结点*/{p=find_lklist(head,i-1)/*先找待删结点的直接前驱*/if((p!==NULL)&&(p->next!=NULL))/*若直接前趋存在且待结点存在*/(q=p->next;/*q指向待删结点*/p->next=q->next/*摘除待结点*/;free(q);/*释放已摘除

5、结点q*/}elseerror(“不存在第i个结点”)/*否则给出相关信息*/}3、假设有两个按数据元素值递增有序排列的线性表A和B,均以单链表作存储结构。编写算法将A表和B表归并成一个按元素值递减有序排列的线性表C,并要求利用原表(即A表和B表的)结点空间存放表C。分析:(1)当有序表A,B均非空时,找出两表中元素最小的一个元素,然后将此结点插入到C表中,重复上述步骤。(2)当A,B两表有一个为空表时,将另一表中元素顺序地插入到C表中。(3)由于C按递减排序,因此在C表中插入元素时,应始终插入到C表表头。LklistWlink_lkli

6、st(lklistA,lklistB){while((A!=NULL)&&(B!=NULL))if(A->datadata){p=A;A=A->next;}elsep->next=C;C=p;}if(A==NULL)A=B;while(A!=NULL){p=A;A=A->next;p->next=C;C=p;}return(C);}4、以二叉链表作存储结构,试编写求二叉树深度的算法。Intdepth(bitreptrBT){if(BT==null)return(0);else{l=depth(BT->lchild);r=depth

7、(BT->rchild);return((l>r?l:r)+1);5、以二叉链表作为存储结构,试编写求二叉树中叶子数的算法。intleafcount(bitreptrT)/*求二叉树T的叶子数*/{if(T==NULL)leaf=0;/*当二叉树为空时,叶子数等于0*/elseif(T->lchild==NULL)&&(T->rchild==NULL)leaf=1/*当二叉树仅含一个根结点时,叶子数为1*/else{L=leafcount(T->lchild);/*求左子树的叶子数*/R=leafcount(T->lchild);/*求右

8、子树的叶子数*/leaf=L+R;/*左、右子树叶子数之和等于二叉树的叶子数*/}return(leaf);}6、假设线性表中结点是按健值递增的顺序存放的。试写一顺序查找法,将岗哨设在高下标端

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。