数据结构作业答案.ppt

上传人:sh****n 文档编号:16562137 上传时间:2020-10-12 格式:PPT 页数:15 大小:380.97KB
收藏 版权申诉 举报 下载
数据结构作业答案.ppt_第1页
第1页 / 共15页
数据结构作业答案.ppt_第2页
第2页 / 共15页
数据结构作业答案.ppt_第3页
第3页 / 共15页
资源描述:

《数据结构作业答案.ppt》由会员分享,可在线阅读,更多相关《数据结构作业答案.ppt(15页珍藏版)》请在装配图网上搜索。

1、线性表 作业答案 1、 编写算法实现顺序表的就地逆置。 #define MaxSize typedef struct DataType listMaxSize; int size; SeqList; void ConverseSeqList(SeqList * L) int mid,i; DataType x; mid=L-size/2; for(i=0;ilisti; L-listi=L-listL-size-1-i; L-listL-size-1-i=x; 2.编写算法实现单链表的就地逆置 。 先定义结点结构: typedef struct Node DataType data; stru

2、ct Node * next; SLNode; void ConverseSList(SLNode * head) SLNode *p,*q; p=head-next; head-next=NULL; while (p!=NULL) q=p; p=p-next; q-next=head-next; head-next=q; 3、已知线性表中的元素以值递增有序排 列,并以单链表作存储结构。设计算法删 除表中所有值大于 mink且小于 maxk的元素。 分析: 删除的结点的特点: mink =maxk void Delete_Between(SLNode *L,int mink,int maxk)

3、 /删除元素递增排列的链表 L中值大于 mink且 /小于 maxk的所有元素 SLNode * p,*pre,*q,*s; p=L-next; while (p if (p) while (p q=pre-next; pre-next=p; while (q!=p) s=q; q=q-next; free(s); 4、已知 A、 B和 C为三个有序链表,编写算法从 A表中删除 B表和 C表中共有的数据元素。 分析: 被删元素的特点: ai=bj=ck 其它元素则为: aibj 或 bjck 或 ckdatadata) pre=pa;pa=pa-next; else if (pb-datada

4、ta) pb=pb-next; else if (pc-datadata) pc=pc-next; else pre-next=pa-next;free(pa); pa=pre-next; 循环条件 :三个指针均不为空。 void DelSame(SLNode * la, SLNode * lb, SLNode * lc) SLNode * pre,*pa,*pb,*pc; pre=la;pa=la-next; pb=lb-next;pc=lc-next; while (papa=pa-next; else if (pb-datadata) pb=pb-next; else if (pc-da

5、tadata) pc=pc-next; else pre-next=pa-next; free(pa); pa=pre-next; 5、设将 n(n1)个整数存放到一维数组 R中。试设计一个 在时间和空间两方面尽可能高效的算法,将 R中的序 列循环左移 p( 0pn)个位置,即将 R中的数据由 ( x0,x1, ,xn-1)变换为 ( xp,xp+1, ,xn-1,x0,x1, ,xp-1)。 要求: ( 1)给出算法的基本设计思想。 ( 2)根据设计思想,采用 C或 C+语言描述算法,关键 之处给出注释。 ( 3)说明你所设计算法的时间复杂度和空间复杂度。 ( 1)算法的基本设计思想: 先将

6、 n个数( x0,x1, ,xp, ,xn-1)原地逆置,得到 ( xn-1, ,xp,xp-1, x0),然后再将前 n-p个和后 p个 元素分别原地逆置,得到最终结果: xp,xp+1, ,xn-1,x0,x1, ,xp-1。 算法可以用两个函数实现: 一个是逆置函数 reverse(),它将给定的数据逆置; 另一个是循环左移函数 leftShift(),它调用 reverse()函数三次,实现相应功能。 ( 2)算法实现: void reverse(int r, int left, int right) int k=left, j=right, temp; /k等于左边界 left, j

7、等于右边界 right while(k0 /将全部数据逆置 reverse(r,0,n-p-1); /将前 n-p个元素逆置 reverse(r,n-p,n-1); /将后 p个元素逆置 ( 3)算法的时间复杂度为 O(n),空间复杂度为 O(1)。 6、假设利用两个线性 表 LA和 LB分别表示两个集合 A 和 B(即:线性表中的数据元素即为集合中的成 员),现要求一个新的集合 A=A B。采用单链表 作为存储结构,编写算法。 上述问题等价于: 要求对线性表作如下操作:扩大线性表 LA,将存 在于线性表 LB中而不存在于线性表 LA中的数据元 素插入到线性表 LA中去。 1从线性表 LB 中依次察看每个数据元素 ; 2依值在线性表 LA 中进行查访 ; 3若不存在,则插入之。 GetElem(LB, i)e LocateElem(LA, e, equal( ) ListInsert(LA, n+1, e) ( n 表示线性表 LA 当前长度 ) 操作步骤:

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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