2022年数据结构课后题目答案 .pdf

上传人:H****o 文档编号:39717036 上传时间:2022-09-07 格式:PDF 页数:6 大小:44.42KB
返回 下载 相关 举报
2022年数据结构课后题目答案 .pdf_第1页
第1页 / 共6页
2022年数据结构课后题目答案 .pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《2022年数据结构课后题目答案 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构课后题目答案 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2.13 LNode*Locate(LinkList L,int x)/链表上的元素查找,返回指针 for(p=l-next;p&p-data!=x;p=p-next);return p;/Locate 2.19 Status Delete_Between(Linklist&L,int mink,int maxk)/删除元素递增排列的链表 L 中值大于 mink 且小于 maxk的所有元素 p=L;while(p-next-datanext;/p是最后一个不大于mink 的元素if(p-next)/如果还有比 mink 更大的元素 q=p-next;while(q-datanext;/q是第一

2、个不小于 maxk的元素p-next=q;/Delete_Between 2.21 void reverse(SqList&A)/顺序表的就地逆置 for(i=1,j=A.length;ij;i+,j-)A.elemA.elemj;/reverse 2.24 void reverse_merge(LinkList&A,LinkList&B,LinkList&C)/把元素递增排列的链表 A和 B 合并为 C,且 C中元素递减排列,使用原空间 pa=A-next;pb=B-next;pre=NULL;/pa和 pb分别指向 A,B 的当前元素while(pa|pb)if(pa-datadata|!

3、pb)pc=pa;q=pa-next;pa-next=pre;pa=q;/将 A的元素插入新表 else pc=pb;q=pb-next;pb-next=pre;pb=q;/将 B的元素插入新表 pre=pc;C=A;A-next=pc;/构造新表头名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 6 页 -/reverse_merge 分析:本算法的思想是,按从小到大的顺序依次把A和 B的元素插入新表的头部pc 处,最后处理 A或 B的剩余元素.2.25 void SqList_Intersect(SqList A,SqList B,SqList&C)/求元素递增排列的线性表 A

4、和 B的元素的交集并存入C中 i=1;j=1;k=0;while(A.elem&B.elemj)if(A.elemB.elemj)j+;if(A.elem=B.elemj)C.elem+k=A.elem;/当发现了一个在 A,B 中都存在的元素,i+;j+;/就添加到 C中/while/SqList_Intersect 3.15typedef struct Elemtype*base2;Elemtype*top2;BDStacktype;/双向栈类型Status Init_Stack(BDStacktype&tws,int m)/初始化一个大小为 m的双向栈tws tws.base0=(Ele

5、mtype*)malloc(sizeof(Elemtype);tws.base1=tws.base0+m;tws.top0=tws.base0;tws.top1=tws.base1;return OK;/Init_Stack Status push(BDStacktype&tws,int i,Elemtype x)/x入栈,i=0表示低端栈,i=1 表示高端栈 if(tws.top0tws.top1)return OVERFLOW;/注意此时的栈满条件 if(i=0)*tws.top0+=x;else if(i=1)*tws.top1-=x;else return ERROR;return O

6、K;/push Status pop(BDStacktype&tws,int i,Elemtype&x)/x出栈,i=0表示低端栈,i=1 表示高端栈名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 6 页 -if(i=0)if(tws.top0=tws.base0)return OVERFLOW;x=*-tws.top0;else if(i=1)if(tws.top1=tws.base1)return OVERFLOW;x=*+tws.top1;else return ERROR;return OK;/pop 3.17int IsReverse()/判断输入的字符串中&前和&后部

7、分是否为逆串,是则返回 1,否则返回 0 InitStack(s);while(e=getchar()!=&)push(s,e);while(e=getchar()!=)if(StackEmpty(s)return 0;pop(s,c);if(e!=c)return 0;if(!StackEmpty(s)return 0;return 1;/IsReverse 3.24Status g(int m,int n,int&s)/求递归函数 g 的值 s if(m=0&n=0)s=0;else if(m0&n=0)s=n+g(m-1,2*n);else return ERROR;return OK;

8、/g 3.30Status EnCyQueue(CyQueue&Q,int x)/带 length 域的循环队列入队算法 if(Q.length=MAXSIZE)return OVERFLOW;Q.rear=(Q.rear+1)%MAXSIZE;Q.baseQ.rear=x;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 6 页 -Q.length+;return OK;/EnCyQueue Status DeCyQueue(CyQueue&Q,int&x)/带 length 域的循环队列出队算法 if(Q.length=0)return INFEASIBLE;head=(Q.r

9、ear-Q.length+1)%MAXSIZE;/详见书后注释 x=Q.basehead;Q.length-;/DeCyQueue 3.31int Palindrome_Test()/判别输入的字符串是否回文序列,是则返回 1,否则返回 0 InitStack(S);InitQueue(Q);while(c=getchar()!=)Push(S,c);EnQueue(Q,c);/同时使用栈和队列两种结构 while(!StackEmpty(S)Pop(S,a);DeQueue(Q,b);if(a!=b)return ERROR;return OK;/Palindrome_Test 4.11 v

10、oid String_Subtract(Stringtype s,Stringtype t,Stringtype&r)/求所有包含在串 s 中而 t 中没有的字符构成的新串r StrAssign(r,);for(i=1;i=Strlen(s);i+)StrAssign(c,SubString(s,i,1);for(j=1;jI&STRCOMPARE(C,SUBSTRING(S,J,1);J+);if(k 判断当前字符是否包含在 t 中for(k=1;kStrlen(t)StrAssign(r,Concat(r,c);/for/String_Subtract 5.31 void GList_Co

11、py(GList A,GList&B)/复制广义表的递归算法 if(!A-tag)/当结点为原子时,直接复制 B-tag=0;B-atom=A-atom;else/当结点为子表时 B-tag=1;if(A-ptr.hp)B-ptr.hp=malloc(sizeof(GLNode);GList_Copy(A-ptr.hp,B-ptr.hp);/复制表头 if(A-ptr.tp)B-ptr.tp=malloc(sizeof(GLNode);GList_Copy(A-ptr.tp,B-ptr.tp);/复制表尾 /else/GList_Copy 6.33 int Is_Descendant_C(in

12、t u,int v)/在孩子存储结构上判断u 是否 v 的子孙,名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 6 页 -是则返回 1,否则返回 0 if(u=v)return 1;else if(Lv)if(Is_Descendant(u,Lv)return 1;if(Rv)if(Is_Descendant(u,Rv)return 1;/这是个递归算法 return 0;/Is_Descendant_C 7.14Status Build_AdjList(ALGraph&G)/输入有向图的顶点数,边数,顶点信息和边的信息建立邻接表 InitALGraph(G);scanf(%d,

13、&v);if(v0)return ERROR;/顶点数不能为负G.vexnum=v;scanf(%d,&a);if(a0)return ERROR;/边数不能为负G.arcnum=a;for(m=0;mv;m+)G.verticesm.data=getchar();/输入各顶点的符号for(m=1;m=a;m+)t=getchar();h=getchar();/t为弧尾,h 为弧头if(i=LocateVex(G,t)0)return ERROR;if(j=LocateVex(G,h)nextarc;q=q-nextarc);q-nextarc=p;p-adjvex=j;p-nextarc=N

14、ULL;/while return OK;/Build_AdjList 9.32int last=0;void MaxLT_MinGT(BiTree T,int x)/找到二叉排序树 T 中小于 x 的最大元素和大于 x 的最小元素 if(T-lchild)MaxLT_MinGT(T-lchild,x);/本算法仍是借助中序遍历来实现if(lastdata=x)/找到了小于 x 的最大元素printf(a=%dn,last);if(lastdatax)/找到了大于 x 的最小元素printf(b=%dn,T-data);last=T-data;if(T-rchild)MaxLT_MinGT(T-rchild,x);名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 6 页 -/MaxLT_MinGT 名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 6 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁