2022年数据结构算法设计期末复习题文 .pdf

上传人:Q****o 文档编号:25942579 上传时间:2022-07-14 格式:PDF 页数:4 大小:33.79KB
返回 下载 相关 举报
2022年数据结构算法设计期末复习题文 .pdf_第1页
第1页 / 共4页
2022年数据结构算法设计期末复习题文 .pdf_第2页
第2页 / 共4页
点击查看更多>>
资源描述

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

1、二、算法设计1、设计一个算法,通过一趟遍历在单链表中确定值最大的结点。ElemType Max (LinkList L ) if(L-next=NULL) return NULL; pmax=L-next; / 假定第一个结点中数据具有最大值p=L-next-next; while(p != NULL )/如果下一个结点存在if(p-data pmax-data) pmax=p; p=p-next; return pmax-data; 2、设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。void inverse(LinkList &L) / 逆置带头结点的单链

2、表L p=L-next; L-next=NULL; while ( p) q=p-next; / q 指向 *p 的后继p-next=L-next; L-next=p; / *p 插入在头结点之后p = q; 3、 设计一个算法, 删除递增有序链表中值大于mink 且小于 maxk 的所有元素 (mink 和 maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同)。void delete(LinkList &L, int mink, int maxk) p=L-next; / 首元结点while (p & p-datanext; / 查找第一个值 mink 的结点if (p) whi

3、le (p & p-datanext; / 查找第一个值maxk 的结点q=pre-next; pre-next=p; / 修改指针while (q!=p) s=q-next; delete q; q=s; / 释放结点空间 /if 4、假设某个单向循环链表的长度大于1,且表中既无头结点也无头指针。已知s 为指向链表中某个结点的指针,试编写算法在链表中删除指针s 所指结点的前驱结点。typedef struct LNode ElemType data; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -

4、 - - - 第 1 页,共 4 页 - - - - - - - - - struct LNode *next; LNode, *LinkList; ElemType DeleteNode(LinkList s) /* 删除指针s所指结点的前驱结点,并返回被删结点的元素值*/ LinkList p; p=s-next; while(p-next-next!=s) p=p-next; ElemType e=p-next-data; p-next=s; return e; 5、已知长度为n 的线性表A 采用顺序存储结构,请写一时间复杂度为0(n)、空间复杂度为0(1)的算法,该算法删除线性表中所有

5、值为item 的数据元素。void DeleteItem(SeqList *L,ElemType item) int i=0,j=L-last; while(ij) while(ielemi!=item) i+; while(ielemi=item) j-; if(ielemi=L-elemj; i+; j-; L-last=i-1; 6、写一个算法,求出循环链表结点的个数。(不包括头结点)int count(Linklist head) int n=0; ListNode.p=head-next; while(p!=head) n+;P=P-next; return n; 7、写一算法在单链

6、表上实现线性表的ListLength(L) 运算。int ListLength ( LinkList L ) int len=0 ; ListNode *p; p=L; / 设该表有头结点while ( p-next ) p=p-next; len+; return len; 8、试写一算法计算二叉树的深度(高度)。int Height(btre bt)/ 求二叉树bt 的深度int hl,hr; if(bt=null) return(0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -

7、- 第 2 页,共 4 页 - - - - - - - - - else hI=Height(bt-lch); hr=Height(bt-rch); if(hlhr) return (hl+1); else return(hr+1); 9、试写一算法统计用二叉链表表示的二叉树叶子结点总数。int leaf ( BinTreeNode * ptr ) if ( ptr = NULL ) return 0; else if ( ptr-leftChild = NULL & ptr-rightChild = NULL ) return 1; else return leaf ( ptr-leftCh

8、ild ) + leaf ( ptr-rightChild ); 10、已知二叉树的定义如下:typedef struct node int data; struct node *lchild, *rchild; *bitree ;试分别写出二叉树的后根遍历和中根遍历的递归算法。后int visit (bitree T) if(T=null) return 0; visit (T-lchirld); visit (T-rchirld); printf(“ %d ” ,data); 中int visit (bitree T) if(T=null) return 0; visit (T-lchir

9、ld); printf(“ %d ” ,data);visit (T-rchirld); 11、已知二叉树的定义如下:typedef struct node int data; struct node *lchild, *rchild; *bitree ;编写二叉树先序遍历的递归算法。先int visit (bitree T) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - if(T=null) return 0; printf

10、(“ %d ” ,data);visit (T-lchirld); visit (T-rchirld); 12、要求二叉树按二叉链表形式存储,写一个建立二叉树的算法。BiTree Creat() /建立二叉树的二叉链表形式的存储结构ElemType x;BiTree bt; scanf(“%d”,&x); /本题假定结点数据域为整型if(x=0) bt=null; else if(x0) bt=(BiNode *)malloc(sizeof(BiNode); bt-data=x; bt-lchild=creat(); bt-rchild=creat(); else error(“输入错误”); return(bt); / 结束BiTree 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -

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

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

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

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