单链表试题及答案解析_第1页
单链表试题及答案解析_第2页
单链表试题及答案解析_第3页
单链表试题及答案解析_第4页
单链表试题及答案解析_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单链表试题及答案解析一、选择题(40分)1.单链表是一种线性数据结构,其特点是:A.每个节点包含数据域和指向下一个节点的指针B.每个节点包含数据域和指向前后两个节点的指针C.每个节点只包含数据域D.每个节点包含数据域和指向任意节点的指针答案:A解释:单链表是一种线性数据结构,每个节点包含数据域和指向下一个节点的指针。选项B描述的是双向链表的特点。选项C描述的是静态数组的特点。选项D描述的是图或更复杂的数据结构的特点。2.在单链表中,插入操作的时间复杂度是:A.O(1)B.O(logn)C.O(n)D.O(n²)答案:A解释:在已知插入位置的前驱节点的情况下,单链表的插入操作时间复杂度是O(1),因为只需要修改几个指针。但如果不知道前驱节点,则需要先找到前驱节点,这时时间复杂度是O(n)。题目中未说明是否已知前驱节点,通常情况下我们假设已知前驱节点。3.关于单链表的随机访问特性,下列说法正确的是:A.可以直接访问任意位置的元素B.必须从头节点开始顺序访问C.可以通过下标直接访问元素D.可以通过指针直接访问任意元素答案:B解释:单链表不支持随机访问,必须从头节点开始顺序访问。选项A和C描述的是数组的特点。选项D描述的是双向链表的特点。4.单链表的头指针指向:A.第一个数据节点B.最后一个数据节点C.链表的第一个节点(可能是头节点)D.链表的最后一个节点答案:C解释:单链表的头指针指向链表的第一个节点,这个节点可能是头节点(不存储实际数据)或第一个数据节点。具体取决于实现方式。5.在单链表的表头插入一个新节点的操作步骤不包括:A.创建新节点B.将新节点的next指向原头节点C.将头指针指向新节点D.遍历链表找到最后一个节点答案:D解释:在单链表的表头插入一个新节点的步骤包括:创建新节点、将新节点的next指向原头节点、将头指针指向新节点。不需要遍历链表找到最后一个节点。6.在单链表的表尾插入一个新节点的时间复杂度是:A.O(1)B.O(logn)C.O(n)D.O(n²)答案:C解释:在单链表的表尾插入一个新节点,如果没有尾指针,需要从头节点开始遍历到链表末尾,时间复杂度是O(n)。如果有尾指针,则时间复杂度是O(1)。7.要在单链表中删除指定节点,需要知道:A.该节点本身B.该节点的前驱节点C.该节点的后继节点D.该节点的前驱节点和后继节点答案:B解释:在单链表中删除指定节点,需要知道该节点的前驱节点,因为需要修改前驱节点的next指针。如果只有该节点本身,无法直接删除它(除非是尾节点)。8.单链表逆置算法的时间复杂度是:A.O(1)B.O(logn)C.O(n)D.O(n²)答案:C解释:单链表逆置算法需要遍历整个链表一次,时间复杂度是O(n)。空间复杂度是O(1),因为只需要常数级别的额外空间。9.关于单链表和数组的比较,下列说法错误的是:A.数组支持随机访问,单链表不支持B.数组插入删除需要移动大量元素,单链表不需要C.数组内存空间连续,单链表内存空间不连续D.数组大小固定,单链表大小可以动态变化答案:C解释:数组内存空间是连续的,而单链表内存空间不连续。选项A、B、D都是正确的描述。10.在单链表中查找值为x的节点,最坏情况下的时间复杂度是:A.O(1)B.O(logn)C.O(n)D.O(n²)答案:C解释:在单链表中查找值为x的节点,最坏情况下需要遍历整个链表,时间复杂度是O(n)。11.关于循环单链表的特点,下列说法错误的是:A.最后一个节点的next指向头节点B.可以从任意节点遍历整个链表C.比普通单链表多一个指向头节点的指针D.适用于需要循环遍历的场景答案:C解释:循环单链表的特点是最后一个节点的next指向头节点,可以从任意节点遍历整个链表。选项C错误,因为循环单链表并不比普通单链表多一个指向头节点的指针。12.在单链表中实现栈的操作,最适合的插入和删除位置是:A.表头B.表尾C.任意位置D.中间位置答案:A解释:在单链表中实现栈的操作,最适合的插入和删除位置是表头,因为栈是后进先出(LIFO)的数据结构,而单链表的表头插入和删除操作都是O(1)时间复杂度。13.关于单链表和双向链表的区别,下列说法正确的是:A.双向链表每个节点只有一个指针B.单链表每个节点只有一个指针C.双向链表插入删除操作更简单D.单链表的空间效率更高答案:B解释:单链表每个节点只有一个指针(指向下一个节点),而双向链表每个节点有两个指针(指向前一个和后一个节点)。选项A描述错误。双向链表插入删除操作需要修改更多指针,不一定更简单。双向链表需要更多空间存储指针,空间效率不一定更高。14.在单链表中,要删除头节点后的第一个节点,需要进行的操作不包括:A.创建临时指针指向头节点的nextB.将头节点的next指向该节点的nextC.释放该节点的内存D.遍历链表找到该节点的前驱答案:D解释:在单链表中,要删除头节点后的第一个节点,需要进行的操作包括:创建临时指针指向头节点的next、将头节点的next指向该节点的next、释放该节点的内存。不需要遍历链表找到该节点的前驱,因为头节点的next就是该节点的前驱。15.关于单链表的头节点,下列说法正确的是:A.头节点是链表的第一个数据节点B.头节点不存储实际数据C.头节点必须存在D.头节点的指针域为空答案:B解释:单链表的头节点通常不存储实际数据,仅作为链表的入口点。选项A错误,因为头节点不一定是第一个数据节点。选项C错误,因为头节点不是必须的。选项D错误,因为头节点的指针域指向第一个数据节点,不为空。16.在单链表中合并两个有序链表的时间复杂度是:A.O(1)B.O(logn)C.O(n)D.O(n²)答案:C解释:在单链表中合并两个有序链表,需要遍历两个链表各一次,时间复杂度是O(n),其中n是两个链表长度的和。17.关于单链表的内存分配,下列说法正确的是:A.必须在编译时分配连续的内存空间B.可以在运行时动态分配内存C.内存空间必须一次性分配完成D.内存分配与链表操作无关答案:B解释:单链表的内存可以在运行时动态分配,不需要在编译时分配连续的内存空间。选项A、C、D都是错误的描述。18.在单链表中,查找第k个元素的时间复杂度是:A.O(1)B.O(logk)C.O(k)D.O(n)答案:C解释:在单链表中,查找第k个元素需要从头节点开始遍历k个节点,时间复杂度是O(k)。19.关于单链表的应用场景,下列说法错误的是:A.实现栈和队列B.多项式表示C.需要频繁随机访问的场景D.文本编辑器的撤销操作答案:C解释:单链表不支持频繁随机访问,因为随机访问需要O(n)时间。选项A、B、D都是单链表的典型应用场景。20.在单链表中,判断链表是否有环的算法不包括:A.使用哈希表记录已访问节点B.快慢指针法C.递归遍历法D.标记法答案:C解释:判断单链表是否有环的算法包括:使用哈希表记录已访问节点、快慢指针法、标记法。递归遍历法不适合判断链表是否有环,因为递归可能导致栈溢出,且无法有效检测环。二、填空题(20分)1.单链表中的每个节点通常包含两个部分:______和______。答案:数据域、指针域解释:单链表中的每个节点通常包含两个部分:数据域(存储实际数据)和指针域(指向下一个节点的指针)。2.在单链表中插入一个新节点时,需要修改的指针最多有______个。答案:2解释:在单链表中插入一个新节点时,需要修改的指针最多有2个:新节点的前驱节点的next指针和新节点的next指针。3.单链表的表头插入操作的时间复杂度为______。答案:O(1)解释:单链表的表头插入操作只需要修改头指针和新节点的next指针,时间复杂度为O(1)。4.单链表的表尾插入操作,如果没有尾指针,时间复杂度为______。答案:O(n)解释:在单链表的表尾插入一个新节点,如果没有尾指针,需要从头节点开始遍历到链表末尾,时间复杂度为O(n)。5.在单链表中删除一个节点时,需要知道该节点的______节点。答案:前驱解释:在单链表中删除一个节点时,需要知道该节点的前驱节点,因为需要修改前驱节点的next指针。6.单链表逆置算法的基本思想是______。答案:逐个反转节点间的指针关系解释:单链表逆置算法的基本思想是遍历链表,逐个反转节点间的指针关系,使原来的后继节点成为前驱节点。7.循环单链表的最后一个节点的指针域指向______。答案:头节点解释:循环单链表的最后一个节点的指针域指向头节点,形成循环结构。8.单链表合并两个有序链表的基本思想是______。答案:同时遍历两个链表,比较当前节点值,将较小值的节点链接到结果链表中解释:单链表合并两个有序链表的基本思想是同时遍历两个链表,比较当前节点值,将较小值的节点链接到结果链表中,直到其中一个链表为空,然后将另一个链表的剩余部分链接到结果链表的末尾。9.判断单链表是否有环的快慢指针法中,慢指针每次移动______步,快指针每次移动______步。答案:1、2解释:判断单链表是否有环的快慢指针法中,慢指针每次移动1步,快指针每次移动2步。如果两个指针相遇,则链表有环;如果快指针到达链表末尾,则链表无环。10.单链表的长度是指______。答案:链表中节点的个数解释:单链表的长度是指链表中节点的个数,不包括头节点(如果有头节点)。三、判断题(20分)1.单链表支持随机访问,可以直接访问任意位置的元素。()答案:×解释:单链表不支持随机访问,必须从头节点开始顺序访问。数组支持随机访问。2.在单链表中插入或删除一个节点的时间复杂度都是O(1)。()答案:×解释:在已知插入位置的前驱节点的情况下,单链表的插入操作时间复杂度是O(1)。删除操作也需要知道前驱节点,时间复杂度也是O(1)。但如果不知道前驱节点,则需要先找到前驱节点,这时时间复杂度是O(n)。3.单链表的表头插入和表尾插入操作的时间复杂度相同。()答案:×解释:单链表的表头插入操作的时间复杂度是O(1),而表尾插入操作如果没有尾指针,时间复杂度是O(n)。4.单链表的表头节点必须存储实际数据。()答案:×解释:单链表的头节点通常不存储实际数据,仅作为链表的入口点。头节点是可选的。5.在单链表中,删除一个节点只需要知道该节点本身即可。()答案:×解释:在单链表中,删除一个节点需要知道该节点的前驱节点,因为需要修改前驱节点的next指针。如果只有该节点本身,无法直接删除它(除非是尾节点)。6.循环单链表的最后一个节点的指针域为空。()答案:×解释:循环单链表的最后一个节点的指针域指向头节点,不为空。7.单链表和数组相比,插入和删除操作更高效。()答案:√解释:单链表和数组相比,插入和删除操作更高效,因为不需要移动大量元素。8.单链表的空间效率高于双向链表。()答案:√解释:单链表每个节点只有一个指针,而双向链表每个节点有两个指针,所以单链表的空间效率高于双向链表。9.单链表合并两个有序链表的时间复杂度是O(n²)。()答案:×解释:单链表合并两个有序链表的时间复杂度是O(n),其中n是两个链表长度的和。10.在单链表中,查找元素的时间复杂度是O(1)。()答案:×解释:在单链表中,查找元素的时间复杂度是O(n),因为需要从头节点开始顺序遍历。四、简答题(40分)1.请简述单链表的定义、特点以及与数组的区别。答案:定义:单链表是一种线性数据结构,由一系列节点组成,每个节点包含数据域和指向下一个节点的指针。第一个节点称为头节点,最后一个节点的指针域为空(对于普通单链表)。特点:-线性结构,节点按逻辑顺序排列-内存空间不连续,节点随机存储在内存中-通过指针连接节点-支持动态大小,可以在运行时添加或删除节点-不支持随机访问,只能顺序访问-插入和删除操作高效(已知前驱节点的情况下)与数组的区别:-内存分配:数组需要连续的内存空间,单链表不需要-大小:数组大小固定,单链表大小可动态变化-随机访问:数组支持O(1)时间的随机访问,单链表不支持-插入删除:数组插入删除需要移动大量元素,时间复杂度O(n);单链表插入删除只需修改指针,时间复杂度O(1)(已知前驱节点的情况下)-空间效率:数组不需要额外空间存储指针,单链表需要额外空间存储指针2.请描述在单链表表头插入一个新节点的步骤,并分析时间复杂度。答案:步骤:1.创建一个新节点,并设置其数据域为要插入的数据2.将新节点的next指针指向当前的头节点3.将头指针指向新节点时间复杂度分析:-创建新节点:O(1)-设置新节点的next指针:O(1)-更新头指针:O(1)总时间复杂度:O(1)注意:如果链表有头节点(不存储实际数据的节点),则新节点将插入在头节点之后,成为第一个数据节点。3.请描述在单链表中删除指定节点的步骤,并分析时间复杂度。答案:步骤:1.如果要删除的是头节点,则直接将头指针指向头节点的下一个节点,并释放原头节点的内存2.如果要删除的是中间或尾节点,需要先找到该节点的前驱节点3.将前驱节点的next指针指向要删除节点的下一个节点4.释放要删除节点的内存时间复杂度分析:-如果要删除的是头节点:O(1)-如果要删除的是其他节点:需要先找到前驱节点,最坏情况下需要遍历整个链表,时间复杂度为O(n)注意:在单链表中,删除一个节点必须知道其前驱节点,因为需要修改前驱节点的next指针。如果只知道要删除的节点本身,无法直接删除它(除非是尾节点)。4.请简述单链表逆置的算法思想,并分析时间复杂度和空间复杂度。答案:算法思想:1.初始化三个指针:prev(前驱节点,初始为null)、current(当前节点,初始为头节点)、next(后继节点,初始为null)2.遍历链表,对于每个current节点:a.保存current的后继节点到nextb.将current的next指针指向prevc.将prev和current分别向后移动一位(prev=current,current=next)3.最后将头指针指向prev(即原来的最后一个节点)时间复杂度分析:需要遍历整个链表一次,时间复杂度为O(n)空间复杂度分析:只使用了常数级别的额外空间(三个指针),空间复杂度为O(1)注意:这种方法原地逆置链表,不需要额外的空间来存储链表副本。5.请简述判断单链表是否有环的快慢指针算法,并分析时间复杂度和空间复杂度。答案:算法思想:1.初始化两个指针:slow(慢指针,每次移动1步)和fast(快指针,每次移动2步),都指向头节点2.同时移动slow和fast,直到fast或fast.next为null(表示到达链表末尾,无环)或slow和fast相遇(表示有环)3.如果slow和fast相遇,则链表有环;如果fast或fast.next为null,则链表无环时间复杂度分析:最坏情况下需要遍历整个链表一次,时间复杂度为O(n)空间复杂度分析:只使用了常数级别的额外空间(两个指针),空间复杂度为O(1)数学证明:如果有环,设环的长度为C,非环部分的长度为L,慢指针进入环后,快指针已经在环中。设慢指针进入环后走了x步,快指针在环中走了2x步。因为快指针比慢指针多走了x步,而x一定是C的整数倍,所以最终两者会在环中某点相遇。五、算法设计题(60分)1.设计一个算法,删除单链表中所有值为x的节点,并分析时间复杂度和空间复杂度。答案:算法思想:1.处理头节点连续为x的情况:循环检查头节点是否为x,如果是,则移动头指针到下一个节点,直到头节点不为x或链表为空2.使用两个指针:prev(前驱节点)和current(当前节点),初始prev指向头节点,current指向头节点的下一个节点3.遍历链表:a.如果current节点的值为x,则将prev的next指向current的next,并释放current节点b.否则,将prev和current都向后移动一位4.重复步骤3直到current为null代码实现(伪代码):```functiondeleteAllX(head,x)://处理头节点连续为x的情况whilehead!=nullandhead.data==x:temp=headhead=head.nextfree(temp)//处理中间和尾部节点prev=headcurrent=head.nextwhilecurrent!=null:ifcurrent.data==x:prev.next=current.nextfree(current)current=prev.nextelse:prev=currentcurrent=current.nextreturnhead```时间复杂度分析:最坏情况下需要遍历整个链表一次,时间复杂度为O(n)空间复杂度分析:只使用了常数级别的额外空间(几个指针),空间复杂度为O(1)2.设计一个算法,找出两个单链表的第一个公共节点,并分析时间复杂度和空间复杂度。答案:算法思想:1.计算两个链表的长度lenA和lenB2.计算长度差diff=|lenA-lenB|3.将较长链表的指针向后移动diff步,使两个链表的剩余长度相同4.同时遍历两个链表,找到第一个相同的节点即为第一个公共节点5.如果没有公共节点,则返回null代码实现(伪代码):```functiongetIntersectionNode(headA,headB)://计算链表A的长度lenA=0currentA=headAwhilecurrentA!=null:lenA++currentA=currentA.next//计算链表B的长度lenB=0currentB=headBwhilecurrentB!=null:lenB++currentB=currentB.next//计算长度差diff=abs(lenA-lenB)//将较长链表的指针向后移动diff步iflenA>lenB:fori=1todiff:headA=headA.nextelse:fori=1todiff:headB=headB.next//同时遍历两个链表,找到第一个公共节点whileheadA!=nullandheadB!=null:ifheadA==headB:returnheadAheadA=headA.nextheadB=headB.nextreturnnull```时间复杂度分析:计算长度需要O(n)时间,移动指针需要O(m)时间(m为长度差),遍历寻找公共节点需要O(k)时间(k为公共节点前的节点数),总时间复杂度为O(n)空间复杂度分析:只使用了常数级别的额外空间,空间复杂度为O(1)3.设计一个算法,将一个单链表重新排序,使得所有奇数位置节点在前,偶数位置节点在后,并保持相对顺序,分析时间复杂度和空间复杂度。答案:算法思想:1.将单链表分成两个子链表:一个包含奇数位置节点,一个包含偶数位置节点2.反转偶数位置子链表3.将两个子链表合并,奇数位置子链表在前,偶数位置子链表在后代码实现(伪代码):```functionreorderList(head):ifhead==nullorhead.next==null:returnhead//分离奇数和偶数位置节点oddHead=headevenHead=head.nextodd=oddHeadeven=evenHeadwhileeven!=nullandeven.next!=null:odd.next=even.nextodd=odd.nexteven.next=odd.nexteven=even.next//反转偶数位置子链表evenHead=reverseList(evenHead)//合并两个子链表mergeLists(oddHead,evenHead)returnhead```其中,reverseList函数用于反转链表:```functionreverseList(head):prev=nullcurrent=headwhilecurrent!=null:next=current.nextcurrent.next=prevprev=currentcurrent=nextreturnprev```mergeLists函数用于合并两个链表:```functionmergeLists(list1,list2):whilelist2!=null:temp1=list1.nexttemp2=list2.nextlist1.next=list2list2.next=temp1list1=temp1list2=temp2```时间复杂度分析:分离链表需要O(n)时间,反转链表需要O(n/2)时间,合并链表需要O(n)时间,总时间复杂度为O(n)空间复杂度分析:只使用了常数级别的额外空间,空间复杂度为O(1)六、编程题(60分)1.实现一个单链表类,包含以下方法:初始化、插入节点(表头、表尾、指定位置)、删除节点(指定值、指定位置)、查找节点、打印链表、逆置链表、判断是否有环等。要求使用C++或Java实现。答案(Java实现):```javapublicclassLinkedList{privateNodehead;//头节点privateintsize;//链表大小//节点类privatestaticclassNode{intdata;Nodenext;publicNode(intdata){this.data=data;this.next=null;}}//初始化链表publicLinkedList(){head=null;size=0;}//在表头插入节点publicvoidinsertAtHead(intdata){NodenewNode=newNode(data);newNode.next=head;head=newNode;size++;}//在表尾插入节点publicvoidinsertAtTail(intdata){NodenewNode=newNode(data);if(head==null){head=newNode;}else{Nodecurrent=head;while(current.next!=null){current=current.next;}current.next=newNode;}size++;}//在指定位置插入节点publicvoidinsertAtPosition(intdata,intposition){if(position<0||position>size){thrownewIndexOutOfBoundsException("Invalidposition");}if(position==0){insertAtHead(data);}else{NodenewNode=newNode(data);Nodecurrent=head;for(inti=0;i<position-1;i++){current=current.next;}newNode.next=current.next;current.next=newNode;size++;}}//删除指定值的节点publicvoiddeleteByValue(intdata){if(head==null){return;}//处理头节点while(head!=null&&head.data==data){head=head.next;size--;}//处理中间和尾部节点Nodecurrent=head;while(current!=null&¤t.next!=null){if(current.next.data==data){current.next=current.next.next;size--;}else{current=current.next;}}}//删除指定位置的节点publicvoiddeleteByPosition(intposition){if(position<0||position>=size){thrownewIndexOutOfBoundsException("Invalidposition");}if(position==0){head=head.next;size--;}else{Nodecurrent=head;for(inti=0;i<position-1;i++){current=current.next;}current.next=current.next.next;size--;}}//查找节点publicNodesearch(intdata){Nodecurrent=head;while(current!=null){if(current.data==data){returncurrent;}current=current.next;}returnnull;}//打印链表publicvoidprintList(){Nodecurrent=head;while(current!=null){System.out.print(current.data+"");current=current.next;}System.out.println();}//逆置链表publicvoidreverseList(){Nodeprev=null;Nodecurrent=head;Nodenext=null;while(current!=null){next=current.next;current.next=prev;prev=current;current=next;}head=prev;}//判断是否有环publicbooleanhasCycle(){if(head==null||head.next==null){returnfalse;}Nodeslow=head;Nodefast=head.next;while(fast!=null&&fast.next!=null){if(slow==fast){returntrue;}slow=slow.next;fast=fast.next.next;}returnfalse;}//获取链表大小publicintgetSize(){returnsize;}//清空链表publicvoidclear(){head=null;size=0;}}```2.实现一个LRU(最近最少使用)缓存机制,要求使用单链表作为底层数据结构,支持get和put操作。要求使用C++或Java实现。答案(Java实现):```javaimportjava.util.HashMap;importjava.util.Map;publicclassLRUCache{privateclassNode{intkey;intvalue;Nodeprev;Nodenext;publicNode(intkey,intvalue){this.key=key;this.value=value;this.prev=null;this.next=null;}}privateintcapacity;privateNodehead;privateNodetail;privateMap<Integer,Node>map;publicLRUCache(intcapacity){this.capacity=capacity;this.head=newNode(-1,-1);this.tail=newNode(-1,-1);head.next=tail;tail.prev=head;this.map=newHashMap<>();}publicintget(intkey){if(!map.containsKey(key)){return-1;}Nodenode=map.get(key);moveToHead(node);returnnode.value;}publicvoidput(intkey,intvalue){if(map.containsKey(key)){Nodenode=map.get(key);node.value=value;moveToHead(node);}else{Nodenode=newNode(key,value);map.put(key,node);addToHead(node);if(map.size()>capacity){Noderemoved=removeTail();map.remove(removed.key);}}}privatevoidaddToHead(Nodenode){node.prev=head;node.next=head.next;head.next.prev=node;head.next=node;}privatevoidremoveNode(Nodenode){node.prev.next=node.next;node.next.prev=node.prev;}privatevoidmoveToHead(Nodenode){removeNode(node);addToHead(node);}privateNoderemoveTail(){Nodenode=tail.prev;removeNode(node);returnnode;}//使用单链表实现的LRU缓存(简化版)publicstaticclassLRUCacheWithLinkedList{privateclassListNode{intkey;intvalue;ListNodenext;publicListNode(intkey,intvalue){this.key=key;this.value=value;this.next=null;}}privateintcapacity;privateListNodehead;privateListNodetail;privateMap<Integer,ListNode>map;publicLRUCacheWithLinkedList(intcapacity){this.capacity=capacity;this.head=null;this.tail=null;this.map=newHashMap<>();}publicintget(intkey){if(!map.containsKey(key)){return-1;}ListNodenode=map.get(key);//将节点移到链表头部if(node!=head){//从链表中移除节点removeNode(node);//添加到头部addToHead(node);}returnnode.value;}publicvoidput(intkey,intvalue){if(map.containsKey(key)){//更新值ListNodenode=map.get(key);node.value=value;//将节点移到

温馨提示

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

最新文档

评论

0/150

提交评论