计算机网络复习1带答案.docx
《计算机网络复习1带答案.docx》由会员分享,可在线阅读,更多相关《计算机网络复习1带答案.docx(7页珍藏版)》请在冰豆网上搜索。
计算机网络复习1带答案
第一章
一、填空题:
1.数据结构是一门研究非数值计算程序设计中计算机的操作对象以及它们之间的关系和运算的学科。
2.从逻辑上可以把数据结构分为线性结构和非线性结构。
3.线性结构的顺序存储结构是一种随机存取的存储结构,线性结构的链式存储是一种顺序存取的存储结构。
4.线性结构中元素的关系是一对一,树形结构中元素的关系是一对多,图形结构中元素的关系是多对多。
5算法的5个重要特征是有穷性、确定性、可行性、输入、输出。
6算法分析的两个主要方面是:
时间复杂度和空间复杂度
二、判断题:
1、顺序存储方式只能用于线性结构、不能用于非线性结构。
×
2、基于某种逻辑结构之上的运算,其实现是唯一的。
3、数据元素是数据的最小单位。
4、数据结构是带有结构的数据元素的集合。
√
5、算法分析的目的是研究算法中的输入和输出的关系×
三、分析以下程序段的时间复杂度:
四、
(1)i=1;
k=100;
while(i{k=k+1;i+=10;}(2)i=1;j=0;while(i+j<=n)if(i>j)j++;elsei++;(3)x=n;y=0;While(x>=(y+1)*(y+1))y++;(4)for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+y; (1)O(n)(2)O(n)(3)O(n1/2)(4)O(n3)第二章一、选择题:1.带头结点的单链表head为空的判断条件是(B)A.head=NULLB.head->next=NULLC.head->next=headD.head!=NULL2.若在线性表中做以下两个操作:(1)在最后一个元素之后插入一个元素(2)删除第一个元素在(D)存储方式最节省时间:A.单链表B.单循环链表C.双向链表D.带尾指针的单循环链表3.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度为(C)。A.O(log2n)B.O(1)C.O(n)D.O(n2)4.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是(A)。A.nB2n-1C2nDn-15.在一个单链表中,已知q所指结点是p所指结点的前趋接点,若在q和p之间插入s结点,则执行(C)A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;C.q->next=s;s->next=p;D.p->next=s;s->next=q;6.双向链表中,在结点p之后插入结点s,其操作是(D):A.p->next=s;s->prior=p;p->next->prior=s;s->prior=p->nextB.p->next=s;p->next->prior=s;s->prior=p;s->next=p->nextC.s->prior=p;s->next=p->next;p->next=s;p->next->prior=s;D.s->prior=p;s->next=p->next;p->next->prior=s;p->next=s;7.设a1、a2、a3为3个结点,整数0,3,4代表地址,则如下的链式存储结构称为(A)034P0a13a24a30(A)循环链表(B)单链表(C)双向循环链表(D)双向链表8..一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是A(A)110(B)108(C)100(D)120二、判断题:1.顺序存储的线性表可以按序号随机存取√2.在顺序表和链表中插入一个元素的时间复杂度均为O(n),因此说它们的执行时间是相等的。×3.链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。×4.向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动n-i个元素。√三、程序设计题:1.线性表用顺序存储,设计一算法,用尽可能少的辅助空间将顺序表中前m个元素和后n个元素进行整体互换。即将线性表:(a1,a2,...,am,b1,b2,...,bn)改变为(b1,b2,...,bn,a1,a2,...,am,)kkk.javaimportjava.io.*;importjava.util.*;publicclasskkk{publicstaticvoidmain(String[]args){ArrayLista=newArrayList();inti;for(i=1;i<=8;i++){a.add(i);}for(i=30;i>=26;i--){a.add(i);}for(i=0;i<=a.size()-1;i++){System.out.print(a.get(i)+"");}System.out.println();intk,j;for(i=1;i<=8;i++){k=a.get(0);for(j=1;j<=a.size()-1;j++)a.set(j-1,a.get(j));a.set(a.size()-1,k);}for(i=0;i<=a.size()-1;i++){System.out.print(a.get(i)+"");}System.out.println();}} 2.已知两个单链表A和B分别表示两个集合,其元素递增排列,编写算法求A、B两者的交集C,要求C也递增排列。ooo.java importjava.util.*;importjava.io.*;publicclassooo{publicstaticvoidmain(String[]args){LinkedListl1=newLinkedList();LinkedListl2=newLinkedList();LinkedListl3=newLinkedList();inti;Scanners=newScanner(System.in);for(i=1;i<=8;i++){l1.add(s.nextInt());}for(i=0;i<=7;i++){System.out.print(l1.get(i)+"");}System.out.println();for(i=1;i<=6;i++){l2.add(s.nextInt());}for(i=0;i<=5;i++){System.out.print(l2.get(i)+"");}System.out.println();intj=0;i=0;while(i<=l1.size()-1&&j<=l2.size()-1){if(l1.get(i)i++;elseif(l1.get(i)>l2.get(j))j++;else{l3.add(l1.get(i));i++;j++;}}for(i=0;i<=l3.size()-1;i++){System.out.print(l3.get(i)+"");}System.out.println();}}
{
k=k+1;
i+=10;
}
(2)i=1;
j=0;
while(i+j<=n)
if(i>j)
j++;
else
i++;
(3)x=n;
y=0;
While(x>=(y+1)*(y+1))
y++;
(4)for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
for(k=1;k<=j;k++)
x=x+y;
(1)O(n)
(2)O(n)
(3)O(n1/2)
(4)O(n3)
第二章
一、选择题:
1.带头结点的单链表head为空的判断条件是(B)
A.head=NULLB.head->next=NULL
C.head->next=headD.head!
=NULL
2.若在线性表中做以下两个操作:
(1)在最后一个元素之后插入一个元素
(2)删除第一个元素
在(D)存储方式最节省时间:
A.单链表B.单循环链表
C.双向链表D.带尾指针的单循环链表
3.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度为(C)。
A.O(log2n)B.O
(1)
C.O(n)D.O(n2)
4.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是(A)。
A.nB2n-1C2nDn-1
5.在一个单链表中,已知q所指结点是p所指结点的前趋接点,若在q和p之间插入s结点,则执行(C)
A.s->next=p->next;p->next=s;
B.p->next=s->next;s->next=p;
C.q->next=s;s->next=p;
D.p->next=s;s->next=q;
6.双向链表中,在结点p之后插入结点s,其操作是(D):
A.p->next=s;s->prior=p;p->next->prior=s;s->prior=p->next
B.p->next=s;p->next->prior=s;s->prior=p;s->next=p->next
C.s->prior=p;s->next=p->next;p->next=s;p->next->prior=s;
D.s->prior=p;s->next=p->next;p->next->prior=s;p->next=s;
7.设a1、a2、a3为3个结点,整数0,3,4代表地址,则如下的链式存储结构称为(A)
0
3
4
P0
a1
a2
a3
(A)循环链表(B)单链表(C)双向循环链表(D)双向链表
8..一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是A
(A)110(B)108(C)100(D)120
1.顺序存储的线性表可以按序号随机存取√
2.在顺序表和链表中插入一个元素的时间复杂度均为
O(n),因此说它们的执行时间是相等的。
3.链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。
4.向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动n-i个元素。
三、程序设计题:
1.线性表用顺序存储,设计一算法,用尽可能少的辅助空间将顺序表中前m个元素和后n个元素进行整体互换。
即将线性表:
(a1,a2,...,am,b1,b2,...,bn)改变为
(b1,b2,...,bn,a1,a2,...,am,)
kkk.java
importjava.io.*;
importjava.util.*;
publicclasskkk
publicstaticvoidmain(String[]args){
ArrayLista=newArrayList();
inti;
for(i=1;i<=8;i++)
a.add(i);
for(i=30;i>=26;i--)
for(i=0;i<=a.size()-1;i++)
System.out.print(a.get(i)+"");
System.out.println();
intk,j;
k=a.get(0);
for(j=1;j<=a.size()-1;j++)
a.set(j-1,a.get(j));
a.set(a.size()-1,k);
2.已知两个单链表A和B分别表示两个集合,其元素递增排列,编写算法求A、B两者的交集C,要求C也递增排列。
ooo.java
publicclassooo
LinkedListl1=newLinkedList();
LinkedListl2=newLinkedList();
LinkedListl3=newLinkedList();
Scanners=newScanner(System.in);
l1.add(s.nextInt());
for(i=0;i<=7;i++)
System.out.print(l1.get(i)+"");
for(i=1;i<=6;i++)
l2.add(s.nextInt());
for(i=0;i<=5;i++)
System.out.print(l2.get(i)+"");
intj=0;
i=0;
while(i<=l1.size()-1&&j<=l2.size()-1)
if(l1.get(i)i++;elseif(l1.get(i)>l2.get(j))j++;else{l3.add(l1.get(i));i++;j++;}}for(i=0;i<=l3.size()-1;i++){System.out.print(l3.get(i)+"");}System.out.println();}}
elseif(l1.get(i)>l2.get(j))
l3.add(l1.get(i));
for(i=0;i<=l3.size()-1;i++)
System.out.print(l3.get(i)+"");
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1