数据结构期末考试复习总结_第1页
数据结构期末考试复习总结_第2页
数据结构期末考试复习总结_第3页
数据结构期末考试复习总结_第4页
数据结构期末考试复习总结_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

千里之行,始于足下让知识带有温度。第第2页/共2页精品文档推荐数据结构期末考试复习总结《数据结构》期末考试题型及分值

(1)简答题6题*5分=30分简要回答要点

(2)分析题6题*5分=30分给出结果

(3)设计题1题*10分=10分设计思想及结果

(4)编程题1题*10分=10分完整代码

(5)综合题1题*20分=20分抽象数据类型的定义、表示、实现、算法分析{定义=功能(ADT)表示=存储结构体实现=算法(基本操作)算法分析=时光、空间复杂度}

考试概念有:1.数据结构{一、线性表(栈-队-列-串-数组-广义表-规律结构-存储结构-运算结构)

二、非线性表(集合-树-图)}

2.抽象数据类型数据对象-数据关系-基本操作

3.算法性质-要求(设计)-效率(度量)

4.实例查找:高效查找算法

排序:高效的排序算法

分析题考试题目参考

(1)1-2-3-4-5-6挨次建BBST(2)6-5-4-3-2-1挨次建BBST

简答题实例

(1)

(2)

数据结构试卷(一)

三、计算题(每题6分,共24分)

1.在如下数组A中链接存储了一个线性表,表头指针为A[0].next,试写出该线性表。A01234567

data605078903440

next

357204

1

线性表为:(78,50,40,60,34,90)???????

??

???????01

1

1

1010111011101010111

2.请画出下图的邻接矩阵和邻接表。

3.已知一个图的顶点集

V和边集E分离为:

V={1,2,3,4,5,6,7};E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,

(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25};

用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。

用克鲁斯卡尔算法得到的最小生成树为:

(1,2)3,(4,6)4,(1,3)5,(1,4)8,(2,5)10,(4,7)20

4.画出向小根堆中加入数据4,2,5,8,3时,每加入一个数据后堆的变化。见图12

图12

图11

四、阅读算法(每题7分,共14分)

1.LinkListmynote(LinkListL)

{//L是不带头结点的单链表的头指针if(LABC(BT->right);coutdatadata){

item=BST->data;//查找胜利

return__true__;}

elseif(itemdata)

returnFind(___BST->left__,item);

elsereturnFind(____BST->right__,item);

}//if

}

六、编写算法(共8分)

统计出单链表HL中结点的值等于给定值X的结点数。

intCountX(LNode*HL,ElemTypex)

intCountX(LNode*HL,ElemTypex)

{inti=0;LNode*p=HL;//i为计数器

while(p!=NULL)

{if(P->data==x)i++;

p=p->next;

}//while,出循环时i中的值即为x结点个数

returni;

}//CountX

数据结构试卷(二)

三、应用题(36分)

1.设一组初始记录关键字序列为(45,80,48,40,22,78),则分离给出第4趟容易挑选排序和第4趟直接插入排序后的结果。

(22,40,45,48,80,78),(40,45,48,80,22,78)

2.设指针变量p指向双向链表中结点A,指针变量q指向被插入结点B,要求给出在结点A的后面插入结点B的操作序列(设双向链表中结点的两个指针域分离为llink和rlink)。

q->llink=p;q->rlink=p->rlink;p->rlink->llink=q;p->rlink=q;

3.设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找办法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找胜利时的平均查找长度。

2,ASL=91*1+2*2+3*4+4*2)=25/9

4.设一棵树T中边的集合为{(A,B),(A,C),(A,D),(B,E),(C,F),(C,G)},要求用孩子兄弟表示法(二叉链表)表示出该树的存储结构并将该树转化成对应的二叉树。

树的链式存储结构略,二叉树略

5.设有无向图G,要求给出用普里姆算法构造最小生成树所走过的边的

集合。

E={(1,3),(1,2),(3,5),(5,6),(6,4)}

6.设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二叉排序树并给出构造过程。

四、算法设计题(16分)

1.设有一组初始记录关键字序列(K1,K2,…,Kn),要求设计一个算法能够在O(n)的时光复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于Ki,右半部分的每个关键字均大于等于Ki。

设有一组初始记录关键字序列(K1,K2,…,Kn),要求设计一个算法能够在O(n)的时光复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于Ki,右半部分的每个关键字均大于等于Ki。

voidquickpass(intr[],ints,intt)

{

inti=s,j=t,x=r[s];

while(inext)

{for(q=hb;q!=0;q=q->next)if(q->data==p->data)break;

if(q!=0){t=(lklist*)malloc(sizeof(lklist));t->data=p->data;t->next=hc;hc=t;}}

}

数据结构试卷(三)

三、计算题(每题10分,共30分)

1.已知二叉树的前序遍历序列是AEFBGCDHIKJ,中序遍历序列是EFAGBCHKIJD,画出此二叉树,并画出它的后序线索二叉树。

A

E

B

F

G

C

D

H

FK

J

NULL

2.已知待散列的线性表为(36,15,40,63,22),散列用的一维地址空间为[0..6],假定选用的散列函数是H(K)=Kmod7,若发生矛盾采纳线性探查法处理,试:H(36)=36mod7=1;H1(22)=(1+1)mod7=2;….矛盾

H(15)=15mod7=1;….矛盾H2(22)=(2+1)mod7=3;H1(15)=(1+1)mod7=2;H(40)=40mod7=5;H(63)=63mod7=0;

H(22)=22mod7=1;….矛盾

(1)计算出每一个元素的散列地址并在下图中填写出散列表:

`0123456

63

36

15

22

40

(2)求出在查找每一个元素概率相等状况下的平均查找长度。ASL=

6.15

3

1121=++++

3.已知序列(10,18,4,3,6,12,1,9,18,8)请用迅速排序写出每一趟排序的结果。(8,9,4,3,6,1),10,(12,18,18)(1,6,4,3),8,(9),10,12,(18,18)1,(3,4,6),8,9,10,12,18,(18)1,3,(4,6),8,9,10,12,18,181,3,4,6,8,9,10,12,18,18

四、算法设计题(每题15分,共30分)

1.设计在单链表中删除值相同的多余结点的算法。设计在单链表中删除值相同的多余结点的算法。typedefintdatatype;

typedefstructnode{datatypedata;structnode*next;}lklist;voiddelredundant(lklist*&head)

{

lklist*p,*q,*s;

for(p=head;p!=0;p=p->next){

for(q=p->next,s=q;q!=0;)

if(q->data==p->data){s->next=q->next;free(q);q=s->next;}else{s=q,q=q->next;}}}

2.设计一个求结点x在二叉树中的双亲结点算法。设计一个求结点x在二叉树中的双亲结点算法。

typedefstructnode{datatypedata;structnode*lchild,*rchild;}bitree;bitree*q[20];intr=0,f=0,flag=0;voidpreorder(bitree*bt,charx){

if(bt!=0return;}

else{r=(r+1)%20;q[r]=bt;preorder(bt->lchild,x);preorder(bt->rchild,x);}}

voidparent(bitree*bt,charx){

inti;

preorder(bt,x);

for(i=f+1;ilchild->data==x||q[i]->rchild->data)break;if(flag==0)printf("notfoundx\n");

elseif(idata);elseprintf("notparent");}

数据结构试卷(四)

三、计算题(每题10分,共30分)

1、画出广义表LS=((),(e),(a,(b,c,d)))的头尾链表存储结构。1

>>>>>11

11

1

11

11^

^^

^00^000e

a

b

c

d

LS

2、下图所示的森林:

(1)求树(a)的先根序列和后根序列;

(1)ABCDEF;BDEFCA;(2)ABCDEFGHIJK;BDEFCAIJKHG林转换为相应的二叉树;

A

GB

C

D

E

FH

I

J

K

(2)求森林先序序列和中序序列;

ABCDEF;BDEFCA;

(3)将此森林转换为相应的二叉树;

A

BC

DEF

G

H

IJK

(a)(b)

(2)ABCDEFGHIJK;BDEFCAIJKHG林转换为相应的二叉树;

A

G

B

C

D

E

FH

I

J

K

3、设散列表的地址范围是[0..9],散列函数为H(key)=(key2+2)MOD9,并采纳链

表处理矛盾,请画出元素7、4、5、3、6、2、8、9依次插入散列表的存储结构。

H(4)=H(5)=0,H(3)=H(6)=H(9)=2,H(8)=3,H(2)=H(7)=6

0123456789

45

369

8

27

^

^

^^

^

^

^

^

^

四、算法设计题(每题10分,共30分)

1.设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。

设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。

typedefchardatatype;

typedefstructnode{datatypedata;structnode*next;}lklist;

voidsplit(lklist*head,lklist*ha=0,hb=0,hc=0;

for(p=head;p!=0;p=head)

{

head=p->next;p->next=0;

if(p->data>='A'ha=p;}

elseif(p->data>='0'hb=p;}else{p->next=hc;hc=p;}

}

}

2.设计在链式存储结构上交换二叉树中全部结点左右子树的算法。

设计在链式存储结构上交换二叉树中全部结点左右子树的算法。

typedefstructnode{intdata;structnode*lchild,*rchild;}bitree;

voidswapbitree(bitree*bt)

{

bitree*p;

if(bt==0)return;

swapbitree(bt->lchild);swapbitree(bt->rchild);

p=bt->lchild;bt->lchild=bt->rchild;bt->rchild=p;

}

3.在链式存储结构上建立一棵二叉排序树。

在链式存储结构上建立一棵二叉排序树。

#definen10

typedefstructnode{intkey;structnode*lchild,*rchild;}bitree;

voidbstinsert(bitree*bt->key=key;bt->lchild=bt->rchild=0;}

elseif(bt->key>key)bstinsert(bt->lchild,key);elsebstinsert(bt->rchild,key);

}

voidcreatebsttree(bitree*

for(i=1;idata!=bt2->data)return(0);

elsereturn(judgebitree(bt1->lchild,bt2->lchild)*judgebitree(bt1->rchild,bt2->rchild));

}

2.设计两个有序单链表的合并排序算法。

设计两个有序单链表的合并排序算法。

voidmergelklist(lklist*ha,lklist*hb,lklist*

while(ha!=0else{s->next=ha;s=ha;};ha=ha->next;}

else{if(s==0)hc=s=hb;else{s->next=hb;s=hb;};hb=hb->next;}

if(ha==0)s->next=hb;elses->next=ha;

}

数据结构试卷(六)

四、算法设计题(20分)

1.设计在挨次有序表中实现二分查找的算法。

设计在挨次有序表中实现二分查找的算法。

structrecord{intkey;intothers;};

intbisearch(structrecordr[],intk)

{

intlow=0,mid,high=n-1;

while(lownext==0)return;

elsefor(q=head,p=head->next;p!=0;p=q->next)

{

for(s=head;s!=q->next;s=s->next)if(s->data>p->data)break;

if(s==q->next)q=p;

else{q->next=p->next;p->next=s->next;s->next=p;t=p->data;p->data=s->data;s->data=t;}

}

}

数据结构试卷(七)

四、算法设计题(20分)

1.设计在链式结构上实现容易挑选排序算法。

设计在链式结构上实现容易挑选排序算法。

voidsimpleselectsorlklist(lklist*intmin,t;

if(head==0||head->next==0)return;

for(q=head;q!=0;q=q->next)

{

min=q->data;s=q;

for(p=q->next;p!=0;p=p->next)if(min>p->data){min=p->data;s=p;}

if(s!=q){t=s->data;s->data=q->data;q->data=t;}

}

}

2.设计在挨次存储结构上实现求子串算法。

设计在挨次存储结构上实现求子串算法。

voidsubstring(chars[],longstart,longcount,chart[])

{

longi,j,length=strlen(s);

if(startlength)printf("Thecopypositioniswrong");

elseif(start+count-1>length)printf("Toocharacterstobecopied");

else{for(i=start-1,j=0;ikey==x)return;elseif(bt->key>x)level(bt->lchild,x);elselevel(bt->rchild,x);}

}

数据结构试卷(八)

四、算法设计题(20分)

1.设计一个在链式存储结构上统计二叉树中结点个数的算法。

设计一个在链式存储结构上统计二叉树中结点个数的算法。

voidcountnode(bitree*bt,intcountnode(bt->lchild,count);countnode(bt->rchild,count);}

}

2.设计一个算法将无向图的邻接矩阵转为对应邻接表的算法。

设计一个算法将无向图的邻接矩阵转为对应邻接表的算法。

typedefstruct{intvertex[m];intedge[m][m];}gadjmatrix;

typedefstructnode1{intinfo;intadjvertex;structnode1*nextarc;}glinklistnode;

typedefstructnode2{intvertexinfo;glinklistnode*firstarc;}glinkheadnode;

voidadjmatrixtoadjlist(gadjmatrixg1[],glinkheadnodeg2[])

{

inti,j;glinklistnode*p;

for(i=0;iadjvertex=j;

p->nextarc=g[i].firstarc;g[i].firstarc=p;

p=(glinklistnode*)malloc(sizeof(glinklistnode));p->adjvertex=i;

p->nextarc=g[j].firstarc;g[j].firstarc=p;

}

}

数据结构试卷(九)

五、算法设计题(20分)

1.设计计算二叉树中全部结点值之和的算法。

设计计算二叉树中全部结点值之和的算法。

voidsum(bitree*bt,intsum(bt->lchild,s);sum(bt->rchild,s);}}

2.设计将全部奇数移到全部偶数之前的算法。

设计将全部奇数移到全部偶数之前的算法。

voidquickpass(intr[],ints,intt)

{

inti=s,j=t,x=r[s];

while(inext==0)return(1);else

for(q=head,p=head->next;p!=0;q=p,p=p->next)if(q->data>p->data)return(0);

return(1);

}

数据结构试卷(十)

三、算法设计题(22分)

1.设计在链式存储结构上合并排序的算法。设计在链式存储结构上合并排序的算法。

voidmergelklist(lklist*ha,lklist*hb,lklist*

while(ha!=0else{s->next=ha;s=ha;};ha=ha->next;}else{if(s==0)hc=s=hb;else{s->next=hb;s=hb;};hb=hb->next;}if(ha==0)s->next=hb;elses->next=ha;}

2.设计在二叉排序树上查找结点X的算法。设计在二叉排序树上查找结点X的算法。bitree*bstsearch1(bitree*t,intkey){

bitree*p=t;

while(p!=0)if(p->key==key)return(p);elseif(p->key>key)p=p->lchild;elsep=p->rchild;

return(0);}

3.设关键字序列(k1,k2,…,kn-1)是堆,设计算法将关键字序列(k1,k2,…,kn-1,x)调

整为堆。

设关键字序列(k1,k2,…,kn-1)是堆,设计算法将关键字序列(k1,k2,…,kn-1,x)调节为堆。

voidadjustheap(intr[],intn){

intj=n,i=j/2,temp=r[j-1];

while(i>=1)if(temp>=r[i-1])break;else{r[j-1]=r[i-1];j=i;i=i/2;}r[j-1]=temp;}

数据结构试卷(一)参考答案

三、计算题(每题6分,共24分)

1.线性表为:(78,50,40,60,34,90)

2.邻接矩阵:?????????

???????01

1

1

10101110111010101110

邻接表如图11所示:

图11

3.用克鲁斯卡尔算法得到的最小生成树为:(1,2)3,(4,6)4,(1,3)5,(1,4)8,(2,5)10,(4,7)20

4.见图12

图12

四、读算法(每题7分,共14分)1.(1)查询链表的尾结点

(2)将第一个结点链接到链表的尾部,作为新的尾结点(3)返回的线性表为(a2,a3,…,an,a1)2.递归地后序遍历链式存储的二叉树。五、法填空(每空2分,共8分)

trueBST->leftBST->right六、编写算法(8分)

intCountX(LNode*HL,ElemTypex)

{inti=0;LNode*p=HL;//i为计数器while(p!=NULL)

{if(P->data==x)i++;p=p->next;

}//while,出循环时i中的值即为x结点个数returni;}//CountX

数据结构试卷(二)参考答案

四、算法设计题

1.设有一组初始记录关键字序列(K1,K2,…,Kn),要求设计一个算法能够在O(n)的时

间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于Ki,右半部分的每个关键字均大于等于Ki。voidquickpass(intr[],ints,intt){

inti=s,j=t,x=r[s];while(inext)

{for(q=hb;q!=0;q=q->next)if(q->data==p->data)break;

if(q!=0){t=(lklist*)malloc(sizeof(lklist));t->data=p->data;t->next=hc;hc=t;}}

}

数据结构试卷(三)参考答案

三、计算题1.

A

E

B

F

G

C

D

H

FK

J

NULL

2、H(36)=36mod7=1;H1(22)=(1+1)mod7=2;….矛盾

H(15)=15mod7=1;….矛盾H2(22)=(2+1)mod7=3;H1(15)=(1+1)mod7=2;H(40)=40mod7=5;H(63)=63mod7=0;

H(22)=22mod7=1;….矛盾

(1)0123456

63

36

15

22

40

(2)ASL=

6.15

3

1121=++++

3、(8,9,4,3,6,1),10,(12,18,18)(1,6,4,3),8,(9),10,12,(18,18)1,(3,4,6),8,9,10,12,18,(18)1,3,(4,6),8,9,10,12,18,181,3,4,6,8,9,10,12,18,18

四、算法设计题

1.设计在单链表中删除值相同的多余结点的算法。

typedefintdatatype;

typedefstructnode{datatypedata;structnode*next;}lklist;voiddelredundant(lklist*

for(p=head;p!=0;p=p->next){

for(q=p->next,s=q;q!=0;)

if(q->data==p->data){s->next=q->next;free(q);q=s->next;}else{s=q,q=q->next;}}}

2.设计一个求结点x在二叉树中的双亲结点算法。

typedefstructnode{datatypedata;structnode*lchild,*rchild;}bitree;bitree*q[20];intr=0,f=0,flag=0;voidpreorder(bitree*bt,charx){

if(bt!=0return;}

else{r=(r+1)%20;q[r]=bt;preorder(bt->lchild,x);preorder(bt->rchild,x);}}

voidparent(bitree*bt,charx){

inti;

preorder(bt,x);

for(i=f+1;ilchild->data==x||q[i]->rchild->data)break;if(flag==0)printf("notfoundx\n");

elseif(idata);elseprintf("notparent");}

数据结构试卷(四)参考答案

三、计算题1.1

>>>>>11

11

1

11

11^

^^

^00^000e

a

b

c

d

LS

2.

(1)ABCDEF;BDEFCA;(2)ABCDEFGHIJK;BDEFCAIJKHG林转换为相应的二叉树;

A

G

B

C

D

E

FH

I

J

K3.H(4)=H(5)=0,H(3)=H(6)=H(9)=2,H(8)=3,H(2)=H(7)=6

0123456789

45

369

8

27

^

^

^^

^

^

^

^

^

四、算法设计题

1.设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),要求利用原单链表

中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。

typedefchardatatype;

typedefstructnode{datatypedata;structnode*next;}lklist;

voidsplit(lklist*head,lklist*ha=0,hb=0,hc=0;

for(p=head;p!=0;p=head)

{

head=p->next;p->next=0;

if(p->data>='A'ha=p;}

elseif(p->data>='0'hb=p;}else{p->next=hc;hc=p;}

}

}

2.设计在链式存储结构上交换二叉树中全部结点左右子树的算法。

typedefstructnode{intdata;structnode*lchild,*rchild;}bitree;

voidswapbitree(bitree*bt)

{

bitree*p;

if(bt==0)return;

swapbitree(bt->lchild);swapbitree(bt->rchild);

p=bt->lchild;bt->lchild=bt->rchild;bt->rchild=p;

}

3.在链式存储结构上建立一棵二叉排序树。

typedefstructnode{intkey;structnode*lchild,*rchild;}bitree;

voidbstinsert(bitree*bt->key=key;bt->lchild=bt->rchild=0;}elseif(bt->key>key)bstinsert(bt->lchild,key);elsebstinsert(bt->rchild,key);

}

voidcreatebsttree(bitree*

for(i=1;idata!=bt2->data)return(0);

elsereturn(judgebitree(bt1->lchild,bt2->lchild)*judgebitree(bt1->rchild,bt2->rchild));

}

2.设计两个有序单链表的合并排序算法。

voidmergelklist(lklist*ha,lklist*hb,lklist*

while(ha!=0else{s->next=ha;s=ha;};ha=ha->next;}

else{if(s==0)hc=s=hb;else{s->next=hb;s=hb;};hb=hb->next;}

if(ha==0)s->next=hb;elses->next=ha;

}

数据结构试卷(六)参考答案

四、算法设计题

1.设计在挨次有序表中实现二分查找的算法。

structrecord{intkey;intothers;};

intbisearch(structrecordr[],intk)

{

intlow=0,mid,high=n-1;

while(lowk)high=mid-1;elselow=mid+1;

}

}

2.设计推断二叉树是否为二叉排序树的算法。

intminnum=-32768,flag=1;

typedefstructnode{intkey;structnode*lchild,*rchild;}bitree;

voidinorder(bitree*bt)

{

if(bt!=0){inorder(bt->lchild);if(minnum>bt->key)flag=0;minnum=bt->key;inorder(bt->rchild);}

}

3.在链式存储结构上设计直接插入排序算法

voidstraightinsertsort(lklist*intt;

if(head==0||head->next==0)return;

elsefor(q=head,p=head->next;p!=0;p=q->next)

{

for(s=head;s!=q->next;s=s->next)if(s->data>p->data)break;

if(s==q->next)q=p;

else{q->next=p->next;p->next=s->next;s->next=p;t=p->data;p->data=s->data;s->data=t;}

}

}

数据结构试卷(七)参考答案

四、算法设计题

1.设计在链式结构上实现容易挑选排序算法。

voidsimpleselectsorlklist(lklist*intmin,t;

if(head==0||head->next==0)return;

for(q=head;q!=0;q=q->next)

{

min=q->data;s=q;

for(p=q->next;p!=0;p=p->next)if(min>p->data){min=p->data;s=p;}

if(s!=q){t=s->data;s->data=q->data;q->data=t;}

}

}

2.设计在挨次存储结构上实现求子串算法。

voidsubstring(chars[],longstart,longcount,chart[])

{

longi,j,length=strlen(s);

if(startlength)printf("Thecopypositioniswrong");

elseif(start+count-1>length)printf("Toocharacterstobecopied");

else{for(i=start-1,j=0;ikey==x)return;elseif(bt->key>x)level(bt->lchild,x);elselevel(bt->rchild,x);}

}

数据结构试卷(八)参考答案

四、算法设计题

1.设计一个在链式

温馨提示

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

评论

0/150

提交评论