欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年线性表+课后习题答案 .pdf

    • 资源ID:39737586       资源大小:58.65KB        全文页数:6页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年线性表+课后习题答案 .pdf

    第 2 章线性表1选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第 5 个元素的地址是()。A110 B108C100 D120(2)在 n 个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。A 访问第 i 个结点(1in)和求第i 个结点的直接前驱(2in)B在第 i 个结点后插入一个新结点(1in)C删除第i 个结点(1i n)D将 n 个结点从小到大排序(3)向一个有 127 个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动的元素个数为()。A8 B63.5C63 D7(4)链接存储的存储结构所占存储空间()。A 分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针B只有一部分,存放结点值C只有一部分,存储表示结点间关系的指针D分两部分,一部分存放结点值,另一部分存放结点所占单元数(5)线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。A必须是连续的B部分地址必须是连续的C一定是不连续的D连续或不连续都可以(6)线性表在()情况下适用于使用链式结构实现。A需经常修改中的结点值需不断对进行删除插入C中含有大量的结点中结点结构复杂(7)单链表的存储密度()。A大于 1 B等于 1 C小于 1 D不能确定(8)将两个各有n 个元素的有序表归并成一个有序表,其最少的比较次数是()。A n B2n-1 C2n Dn-1(9)在一个长度为n的顺序表中,在第i 个元素(1in+1)之前插入一个新元素时须向后移动()个元素。A n-i Bn-i+1 C n-i-1 Di(10)线性表 L=(a1,a2,an),下列说法正确的是()。A每个元素都有一个直接前驱和一个直接后继B线性表中至少有一个元素C表中诸元素的排列必须是由小到大或由大到小D除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继。(11)若指定有 n 个元素的向量,则建立一个有序单链表的时间复杂性的量级是()。A O(1)BO(n)CO(n2)DO(nlog2n)(12)以下说法错误的是()。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 6 页 -A求表长、定位这两种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低B顺序存储的线性表可以随机存取C由于顺序存储要求连续的存储区域,所以在存储管理上不够灵活D线性表的链式存储结构优于顺序存储结构(13)在单链表中,要将s所指结点插入到p 所指结点之后,其语句应为()。A s-next=p+1;p-next=s;B(*p).next=s;(*s).next=(*p).next;Cs-next=p-next;p-next=s-next;D s-next=p-next;p-next=s;(14)在双向链表存储结构中,删除p 所指的结点时须修改指针()。A p-next-prior=p-prior;p-prior-next=p-next;B p-next=p-next-next;p-next-prior=p;C p-prior-next=p;p-prior=p-prior-prior;D p-prior=p-next-next;p-next=p-prior-prior;(15)在双向循环链表中,在p 指针所指的结点后插入q 所指向的新结点,其修改指针的操作是()。A p-next=q;q-prior=p;p-next-prior=q;q-next=q;B p-next=q;p-next-prior=q;q-prior=p;q-next=p-next;C q-prior=p;q-next=p-next;p-next-prior=q;p-next=q;D q-prior=p;q-next=p-next;p-next=q;p-next-prior=q;2算法设计题(1)将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其它的存储空间。表中不允许有重复的数据。void MergeList_L(LinkList&La,LinkList&Lb,LinkList&Lc)pa=La-next;pb=Lb-next;Lc=pc=La;/用 La 的头结点作为Lc 的头结点 while(pa&pb)if(pa-datadata)pc-next=pa;pc=pa;pa=pa-next;else if(pa-datapb-data)pc-next=pb;pc=pb;pb=pb-next;else/相等时取La 的元素,删除Lb 的元素 pc-next=pa;pc=pa;pa=pa-next;q=pb-next;delete pb;pb=q;pc-next=pa?pa:pb;/插入剩余段 delete Lb;/释放 Lb 的头结点 (2)将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其它的存储空间。表中允许有重复的数据。void union(LinkList&La,LinkList&Lb,LinkList&Lc,)pa=La-next;pb=Lb-next;/初始化 Lc=pc=La;/用 La 的头结点作为Lc 的头结点 Lc-next=NULL;while(pa|pb)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 6 页 -if (!pa)q=pb;pb=pb-next;else if (!pb)q=pa;pa=pa-next;else if(pa-data data)q=pa;pa=pa-next;else q=pb;pb=pb-next;q-next=Lc-next;Lc-next=q;/插入 delete Lb;/释放 Lb 的头结点 (3)已知两个链表A和 B分别表示两个集合,其元素递增排列。请设计算法求出A与B的交集,并存放于A链表中。void Mix(LinkList&La,LinkList&Lb,LinkList&Lc,)pa=la-next;pb=lb-next;设工作指针pa 和 pb;Lc=pc=La;/用 La 的头结点作为Lc 的头结点while(pa&pb)if(pa-data=pb-data)交集并入结果表中。pc-next=pa;pc=pa;pa=pa-next;u=pb;pb=pb-next;delete u;elseif(pa-datadata)u=pa;pa=pa-next;delete u;else u=pb;pb=pb-next;delete u;while(pa)u=pa;pa=pa-next;delete u;释放结点空间while(pb)u=pb;pb=pb-next;delete u;释放结点空间pc-next=null;置链表尾标记。delete Lb;注:本算法中也可对B表不作释放空间的处理(4)已知两个链表A和 B分别表示两个集合,其元素递增排列。请设计算法求出两个集合 A和 B 的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。void Difference(LinkedList A,B,*n)A和 B均是带头结点的递增有序的单链表,分别存储了一个集合,本算法求两集合的差集,存储于单链表A中,*n 是结果集合中元素个数,调用时为0 p=A-next;p和 q 分别是链表A和 B的工作指针。q=B-next;pre=A;pre 为 A中 p 所指结点的前驱结点的指针。while(p!=null&q!=null)if(p-datadata)pre=p;p=p-next;*n+;A 链表中当前结点指针后移。elseif(p-dataq-data)q=q-next;B链表中当前结点指针后移。else pre-next=p-next;处理 A,B中元素值相同的结点,应删除。u=p;p=p-next;delete u;删除结点(5)设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A的元素类型为整型,要求B、C表利用 A表的结点)。(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。ElemType Max(LinkList L)if(L-next=NULL)return NULL;pmax=L-next;/假定第一个结点中数据具有最大值名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 6 页 -p=L-next-next;while(p!=NULL)/如果下一个结点存在if(p-data pmax-data)pmax=p;p=p-next;return pmax-data;(7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。void inverse(LinkList&L)/逆置带头结点的单链表 L p=L-next;L-next=NULL;while(p)q=p-next;/q指向*p 的后继 p-next=L-next;L-next=p;/*p插入在头结点之后 p=q;(8)设计一个算法,删除递增有序链表中值大于mink 且小于 maxk 的所有元素(mink和 maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同)。void delete(LinkList&L,int mink,int maxk)p=L-next;/首元结点 while(p&p-datanext;/查找第一个值mink 的结点 if(p)while(p&p-datanext;/查找第一个值maxk 的结点 q=pre-next;pre-next=p;/修改指针 while(q!=p)s=q-next;delete q;q=s;/释放结点空间 /if (9)已知 p 指向双向循环链表中的一个结点,其结点结构为data、prior、next 三个域,写出算法change(p),交换 p 所指向的结点和它的前缀结点的顺序。知道双向循环链表中的一个结点,与前驱交换涉及到四个结点(p 结点,前驱结点,前驱的前驱结点,后继结点)六条链。void Exchange(LinkedList p)p 是双向循环链表中的一个结点,本算法将p 所指结点与其前驱结点交换。q=p-llink;q-llink-rlink=p;p 的前驱的前驱之后继为p p-llink=q-llink;p 的前驱指向其前驱的前驱。q-rlink=p-rlink;p 的前驱的后继为p 的后继。q-llink=p;p 与其前驱交换名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 6 页 -p-rlink-llink=q;p 的后继的前驱指向原p 的前驱 p-rlink=q;p 的后继指向其原来的前驱算法 exchange 结束。(10)已知长度为n 的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为 O(1)的算法,该算法删除线性表中所有值为item 的数据元素。题目分析 在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i 个元素,第i+1 至第 n 个元素要依次前移)。本题要求删除线性表中所有值为item 的数据元素,并未要求元素间的相对位置不变。因此可以考虑设头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item 的数据元素时,直接将右端元素左移至值为item 的数据元素位置。void Delete(ElemType A,int n)A是有 n 个元素的一维数组,本算法删除A中所有值为item 的元素。i=1;j=n;设置数组低、高端指针(下标)。while(ij)while(ij&Ai!=item)i+;若值不为item,左移指针。if(ij)while(ij&Aj=item)j-;若右端元素值为item,指针左移if(ij)Ai+=Aj-;算法讨论 因元素只扫描一趟,算法时间复杂度为O(n)。删除元素未使用其它辅助空间,最后线性表中的元素个数是j。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 6 页 -名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 6 页 -

    注意事项

    本文(2022年线性表+课后习题答案 .pdf)为本站会员(H****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开