数据结构13章复习重点资料.docx

上传人:b****6 文档编号:7325580 上传时间:2023-01-23 格式:DOCX 页数:9 大小:44.90KB
下载 相关 举报
数据结构13章复习重点资料.docx_第1页
第1页 / 共9页
数据结构13章复习重点资料.docx_第2页
第2页 / 共9页
数据结构13章复习重点资料.docx_第3页
第3页 / 共9页
数据结构13章复习重点资料.docx_第4页
第4页 / 共9页
数据结构13章复习重点资料.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

数据结构13章复习重点资料.docx

《数据结构13章复习重点资料.docx》由会员分享,可在线阅读,更多相关《数据结构13章复习重点资料.docx(9页珍藏版)》请在冰豆网上搜索。

数据结构13章复习重点资料.docx

数据结构13章复习重点资料

一、填空

1、一种数据结构的二元组表示如下:

K={a,b,c,d}

R=(a,b),(b,c),(c,d),(a,d)}

此数据结构是图。

2、在定义某种数据结构时,其数据域的数据类型可分为简单类型和结构体类型两种,为增强其通用性,应将其再定义为通用数据类型。

3、如果将线性数据结构关系描述为1:

1,那么树型和图型数据结构应分别为1:

N、M:

N。

4、数据结构简单地说是指数据以及相互之间的联系。

5、算法应具备以下5个特性:

有穷性、正确性、可行性、输入和输出。

6、在分析各种算法的时间复杂度时,一般只讨论相应的数量级,用f(n)表示,请问其中n的含义是处理问题的样本量。

7、在稀疏矩阵中,非零元素的个数远远少于零元素的个数。

8、的运算规则为后进先出,队列的运算规则为先进先出。

9、对于一个单链表在表头插入结点的时间复杂度为O

(1),在表尾插入元素的时间复杂度为O(n)。

10、在单链表中每个结点包含二个域,一个叫值域(或data),另一个叫指针域(或*next)。

11、顺序表中用数组存储线性表。

12、在顺序表中删除一个元素,必须执行的语句是:

size--。

二、选择题

1、下面程序段的时间复杂度为(B)。

for(inti=1;i<=n;i++)

for(intj=1;j<=n;j++)

printf(“%d*%d=%d\n”,i,j,i*j);

A.O(n)B.O(n2)C.O

(1)B.O(n3)

2、顺序表物理结构中的存储单元(A)。

A.一定是连续的B.一定是不连续的

C.不一定是连续的D.经删除操作后不连续

3、对一个顺序存储结构的栈,栈满的判断条件是(D)

A.S.top==-1B.S.top==0

C.S.top==MaxSizeD.S.top==MaxSize-1

4、若循环队列有n个顺序存储单元,front、rear分别为队首和队尾指针则判断队满的条件是(C)

A.(front+1)%n==rearB.(front-1)%n==rear

C.(rear+1)%n==frontD.(rear-1)%n==front

5、下列是顺序存储线性表排序的算法

voidSort(List&L)

{

inti,j;

ElemTypex;

for(i=1;i

{

x=L.list[i];

for(j=i-1;j>=0;j--)

if(x

L.list[j+1]=L.list[j];

else

break;

L.list[j+1]=x;

};

}

问:

此算法的时间复杂性为:

B

A.O(n)B.(n2)C.(n*i)D.(n*j)

6、向一个顺序栈S(栈顶指针为top)中插入元素x时,首先要(B)。

A.S->stack[S->top]=x;B.S->top++;

C.S->top--;D.x=S->stack[S->top];

7、从一个循环队列中删除元素时,首先需要(D)。

A.队尾指针循环减1B.队首指针循环减1

C.队尾指针循环加1D.队首指针循环加1

8.关于栈的插入和删除操作,正确的说法是(C)。

A.插入在栈顶、删除在栈底进行B.插入在栈底,删除在栈顶进行

C.插入和删除都在栈顶进行D.插入和删除都在栈底进行

9.队的插入操作在(C)进行。

A.队首B.队首或队尾C.队尾D.任意位置

10.若要在一个单链表HL中的由指针p所指结点的后面插入一个指针q所指的结点,则应执行(D)。

A.p->next=q->next;q->next=p;

B.q->next=p->next;p=q;

C.p->next=q->next;q->next=HL;

D.q->next=p->next;p->next=q;

三、简答题

1、简述线性表的顺序存储和链接存储实现的异同。

【答案要点】

1)两者的存储结构不同。

顺序用物理相邻实现逻辑相邻,大多用数组实现,链接存储用链接的方式实现逻辑相邻,物理上不一定相邻;

2)存储相同数量的数据,顺序存储占用空间小,链接存储占用空间大;

3)读取操作:

顺序存储为按元素序号随机访问,效率较高;链接存储为按元素序号顺序访问,效率较低;

4)插入和删除操作:

顺序存储要移动约半数元素,效率较低;链接存储不需移动现有元素,效率较高;

2、举例说明顺序存储的栈在元素出栈和进栈时栈顶指针的变化。

【答案要点】

1)由于顺序栈是由数组存储,元素进栈出栈只能在栈顶进行,用top表示栈顶元素的下标,每次进栈top++;出栈top--。

2)用ABCD四个元素按顺序进、出栈,其top值变化如下:

初始状态:

top=-1

ABC进栈后:

CB出栈

D再进栈

3、说明顺序存储的队列,在解决队满与队空的判断条件时,为什么将队首指针指向第一个元素之前?

这样解决后存储容量有什么变化?

【答案要点】

1)如果f指向队首元素,r指向队尾元素,由于队空和队满条件一样(r+1)%MaxSize==f,所以要将队首指针指向第一个元素之前(或其他方法)。

2)这样,队列中始终有一个存储空间不能用于存储元素,于是存储容量变为MaxSize-1。

四、判断题,并简单说明原因:

1、线性表的逻辑顺序和存储顺序总是一致的。

【解答】错。

顺序表的逻辑顺序和存储顺序一致,链表的逻辑顺序和存储顺序

不一定一致。

2、线性表的顺序存储结构优于链接存储结构。

【解答】错。

两种存储结构各有优缺点。

3、顺序表中的元素可以存储于任何位置。

【解答】错。

顺序表中的元素必须按照逻辑顺序存储于对应的数组位置上。

4、线性结构的基本特征是:

每个元素有且仅有一个直接前驱和一个直接后继。

【解答】错。

每个元素最多只有一个直接前驱和一个直接后继,第一个元素没

有前驱,最后一个元素没有后继。

5、在单链表中,要取得某个元素,只要知道该元素所在结点的地址即可,因

此单链表是随机存取结构。

【解答】错。

要找到该结点的地址,必须从头指针开始查找,所以单链表是顺

序存取结构。

五、有一个顺序循环队列,最大存储空间为MAXSIZE=5,队首指针f指向队首元素的前一单元,队尾指针r指向队尾元素,初始时状态如图所示。

现有A,B,C,D,E,F等元素入队,试按下列要求添画图形或回答问题。

(12分,①—③各2分,④6分)

初始状态

①A,B,C三元素依次入队后队列中的状况和队首队尾指针位置;

②接下来两个元素出队后队列中的状况和队首队尾指针位置(出队的元素不要画出)

③接下来剩余尚未入队的所有元素入队后队列中的状况和队首队尾指针位置

④该队列的数据结构定义为:

structQueueSq{

ElemType*queue;

intfront,rear;

intMaxSize;

};

不考虑健壮性条件,写出下列入队算法中缺失的语句:

voidEnQueue(structQueueSq*Q,ElemTypex)

{…

Q->rear=(Q->rear+1)%Q->MaxSize;

Q->queue[Q->rear]=x;

}

不考虑健壮性条件,写出下列出队算法中缺失的语句:

ElemTypeOutQueue(structQueueSq*Q)

{…

Q->front=(Q->front+1)%Q->MaxSize;

returnQ->queue[Q->front];

}

参考以上两算法和数据结构,写出队满的条件:

(Q->rear+1)%Q->MaxSize==Q->front

和队空的条件:

Q->front==Q->rear

六、用f(n)=2n为例,说明栈与递归算法之间的关系。

要点1:

栈只能在栈顶操作;

要点2:

递归算法是解决一个问题时,是通过解决与它具有相同解法的子问题而得到的;

要点3:

在进行递归调用时,计算机系统自动建立栈,用于存储递归调用参数(下例中的)n和返回地址(下例中的r),进栈;

要点4:

当在一定条件下结束递归调用时,系统按照栈中存储的系数和返回地址逐步返回(出栈)到最初调用处,并得到最终结果。

例:

求f(n)=2nf(n)=1n=0

f(n)=2*f(n-1)n>0

当n=3时进栈退栈

n

f(n)

0

f(0)=1

1

1

2*f(1-1)

2*1=2

2

2*f(2-1)

2*2=4

3

2*f(3-1)

2*4=8

七、

已知线性表A={a1、a2、……an}采用顺序存储结构,其数据域为整型

要求:

1、定义单链表结点(包括对数据域的定义);

2、从顺序表的表尾删除一个结点。

(参考答案)

答1:

typedefintElemType;

structList{

ElemType*list;

intsize;

intMaxSize;

};

答2:

ElemTypeDeleteLastList(structList*L)

{

if(L->size==0){

printf("线性表为空,删除无效\n");

exit

(1);

}

;

L->size--;

returnL->list[L->size];

}

八、

已知线性表A={a1、a2、……an}采用链接存储结构,其数据域为整型

要求:

1、定义单链表结点(包括对数据域的定义);

2、从单链表的表尾删除一个结点。

(参考答案)

答1:

typedefintElemType;

structsNode{

ElemTypedata;

structsLNode*next;

};

答2:

ElemTypeDelete(structsLNode*HL)

{sNode*p=HL;

while(p->next!

=NULL)

p=p->next;

temp=p->data;

deletep;

returntemp;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1