数据结构个人总结

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章复习题

一、选择

1、计算机算法指的是(1),它必须具备_ C ___(2)这三个特性__ B ___

(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法

(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性

C. 确定性、有穷性、稳定性

D. 易读性、稳定性、安全性

2、下面关于算法说法正确的是( D )

A.算法最终必须由计算机程序实现

B. 为解决某问题的算法同为该问题编写的程序含义是相同的

C. 算法的可行性是指指令不能有二义性

D. 以上几个都是错误的

3、从逻辑上可以把数据结构分为( C )两大类。

A.动态结构、静态结构 B.顺序结构、链式结构

C.线性结构、非线性结构 D.初等结构、构造型结构

4、在下面的程序段中,对x的赋值语句的频度为( C )

FOR i:=1 TO n DO

FOR j:=1 TO n DO

x:=x+1;

A. O(2n) B.O(n) C.O(n2) D.O(log2n)

5、程序段 FOR i:=n-1 DOWNTO 1 DO

FOR j:=1 TO i DO

IF A[j]>A[j+1]

THEN A[j]与A[j+1]对换;

其中 n为正整数,则最后一行的语句频度在最坏情况下是( D )

A. O(n)

B. O(nlogn)

C. O(n3)

D. O(n2)

二、判断

1. 数据元素是数据的最小单位。( × )

2.数据的物理结构是指数据在计算机内的实际存储形式。( √ )

三、计算及简答

1、下面程序段的时间复杂度为__ O(n)__。(n>1)

sum=1;

for (i=0;sum

2、若将数据结构定义为一个二元组(D,R),说明符号D,R 应分别表示什么?

答:D是数据元素的有限集合,S是D上数据元素之间关系的有限集合。

第二章复习题

本章重点掌握:线性结构特点,顺序存储结构和链式存储结构特点。

1.在顺序表中插入或删除一个元素,需要平均移动( 一半)元素,具体移动的元素个数与( 插入或删除

的位置)有关。插入时平均次数(n/2 ),删除时平均次数((n-1)/2 )。

2.有一个含头结点的循环链表,头指针为head, 则其为空的条件是:( C )

A)head==NULL B)head->next==NULL C)head->next==head

3.在长度为n的顺序表的第i个位置上插入一个元素(1≤i≤n+1),元素的移动次数为:( A )

A) n – i + 1 B) n – i C) i D) i – 1

4.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( C )

A) 顺序表B) 用头指针表示的循环单链表

C) 用尾指针表示的循环单链表D) 单链表

5.设单链表中结点的结构为(data, link)。已知指针q所指结点是指针p所指结点的直接前驱,若在

*q与*p之间插入结点*s,则应执行下列哪一个操作?(B )

(A) s->link = p->link; p->link = s; (B) q->link = s; s->link = p;

(C) p->link = s->link; s->link = p; (D) p->link = s; s->link = q;

6.设单链表中结点的结构为(data, link)。已知指针p所指结点不是尾结点,若在*p之后插入结点*s,

则应执行下列哪一个操作?(B)

(A) s->link = p; p->link = s; (B) s->link = p->link; p->link = s;

(C) s->link = p->link; p = s; (D) p->link = s; s->link = p;

7.设单链表中结点的结构为(data, link)。若想摘除结点*p的直接后继,则应执行下列哪一个操作?

(A)

(A) p->link = p->link->link; (B) p = p->link; p->link = p->link->link;

(C) p->link = p->link; (D) p = p->link->link;

8.设单循环链表中结点的结构为(data, link),且rear是指向非空的带表头结点的单循环链表的尾结

点的指针。若想删除链表第一个结点,则应执行下列哪一个操作?(D)

(A)s = rear; rear = rear->link; delete s;

(B)rear = rear->link; delete rear;

(C)rear = rear->link->link; delete rear;

(D)s = rear->link->link; rear->link->link = s->link; delete s;

(rear指向尾结点,rear->link->link指向第一个结点,第一个结点变为原来的第二个结点)

9.设双向循环链表中结点的结构为(data, lLink, rLink),且不带表头结点。若想在指针p所指结点之

后插入指针s所指结点,则应执行下列哪一个操作?( D )

(A)p->rLink = s; s->lLink = p; p->rLink->lLink = s; s->rLink = p->rLink;

(B)p->rLink = s; p->rLink->lLink = s; s->lLink = p; s->rLink = p->rLink;

(C)s->lLink = p; s->rLink = p->rLink; p->rLink = s; p->rLink->lLink = s;

(D)s->lLink = p; s->rLink = p->rLink; p->rLink->lLink = s; p->rLink = s;

10.已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案

中选择合适的语句序列。

(A)在P结点后插入S结点的语句序列是4,1 。

(B)*在P结点前插入S结点的语句序列是7,11,8,4,1 。

(C)在表首插入S结点的语句序列是5,12 。

(D)在表尾插入S结点的语句序列是9,1,6 。

1.P->next = S;

2.P->next = P->next ->next;

3.P->next =S->next;

4.S->next =P->next;

5.S->next = L;

6.S->next = NULL;

7.Q = P;

8.while(P->next ! = Q) P = P->next;

9.while(P->next ! = NULL) P = P->next;

10.P = Q;

11.P = L;

12.L = S;

13.L = P;

11.已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的

答案中选择合适的语句序列。

(A)删除P结点的直接后继结点的语句序列是11,3,14 。

(B)删除P结点的直接前驱结点的语句序列是10,12,8,11,3,14 。

(C)删除P结点的语句序列是10,12,7,3,14 。

(D)删除首元结点的语句序列是12,11,3,14 。

(E)删除尾元结点的语句序列是9,11,3,14 / 10,6,3,14 。

1.P = P->next;

2.P ->next = P;

3.P->next = P->next ->next;

4.P = P->next ->next;

5.while(P ! = NULL) P = P->next;

6.while(Q->next ! = NULL) {P = Q;Q=Q->next;}

7.while(P->next ! = Q) P = P->next;

8.while(P->next ->next ! = Q) P = P->next;

9.while(P->next ->next ! = NULL) P = P->next;

10.Q = P;

11.Q = P->next;

12.P = L;

13.L = L->next;

14.free(Q);

12.已知P结点是某双向链表的中间结点,试从下列提供的答案中选择合适的语句序列。

(A)在P结点后插入S结点的语句序列是7,12,3,6 。

(B)在P结点前插入S结点的语句序列是8,13,5,4 。

(C)删除P结点的直接后继结点的语句序列是15,1,11,18 。

(D)删除P结点的直接前驱结点的语句序列是16,2,10,18 。

(E)删除P结点的语句序列是9,14,17 。

1.P->next = P->next ->next;

2.P->prior = P-> prior -> prior;

3.P->next = S;

4.P-> prior = S;

5.S->next = P;

6.S-> prior = P;

相关文档
最新文档