数据结构c语言版复习试题,(完整版)数据结构c语言版期末考试复习试题.doc

《数据结构与算法》复习题

一、选择题。

1.在数据结构中,从逻辑上可以把数据结构分为

C

A .动态结构和静态结构

B.紧凑结构和非紧凑结构

C.线性结构和非线性结构

D.内部结构和外部结构

2.数据结构在计算机内存中的表示是指

A

A .数据的存储结构

B.数据结构

C.数据的逻辑结构

D .数据元素之间的关系

3.在数据结构中,与所使用的计算机无关的是数据的

A

结构。

A .逻辑B .存储

C.逻辑和存储

D .物理( 数据结构在计算机中的表示(映像)称为数

据的物理(存储)结构)

4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储

C。

A .数据的处理方法

B.数据元素的类型

C.数据元素之间的关系

D.数据的存储方法

5.在决定选取何种存储结构时,一般不考虑

A 。

A .各结点的值如何

B .结点个数的多少

C.对数据有哪些运算

D .所用的编程语言实现这种结构是否方便。

6.以下说法正确的是D。

.数据项是数据的基本单位

B.数据元素是数据的最小单位

C.数据结构是带结构的数据项的集合

D.一些表面上很不相同的数据可以有相同的逻辑结构

7.算法分析的目的是C,算法分析的两个主要方面是A。

( 1) A.找出数据结构的合理性B.研究算法中的输入和输出的关系

C.分析算法的效率以求改进C.分析算法的易读性和文档性

( 2) A.空间复杂度和时间复杂度B.正确性和简明性

C.可读性和文档性D.数据复杂性和程序复杂性

8.下面程序段的时间复杂度是O(n 2)。

s =0;

for( I =0; i

for(j=0;j

s +=B[i][j];

sum = s ;

9.下面程序段的时间复杂度是O(n*m)。

for( i =0; i

for(j=0;j

A[i][j]= 0;

1

10.下面程序段的时间复杂度是O(log 3n)。

i = 0;

while ( i<=n )

i = i * 3 ;

11.在以下的叙述中,正确的是B。

.线性表的顺序存储结构优于链表存储结构

B.二维数组是其数据元素为线性表的线性表

C.栈的操作方式是先进先出

D.队列的操作方式是先进后出

12.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着B 。

.数据元素具有同一特点

B.不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致C.每个数据元素都一样

D.数据元素所包含的数据项的个数要相等

13.链表不具备的特点是

A 。

A .可随机访问任一结点

B.插入删除不需要移动元素

C.不必事先估计存储空间

D.所需空间与其长度成正比

14.不带头结点的单链表

head 为空的判定条件是

A

A . head == NULL

B head->next ==NULL

C. head->next ==head

D head!=NULL

15.带头结点的单链表 head 为空的判定条件是

B

A . head == NULL

B head->next ==NULL

C. head->next ==head

D head!=NULL

16.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用

存储方式最节省运算时间。

A .单链表B.给出表头指针的单循环链表C.双链表D .带头结点的双循环链表

17.需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是B。

A .单链表B.静态链表C.线性链表D.顺序存储结构

18.非空的循环单链表head 的尾结点(由p 所指向)满足C。

A . p->next == NULLB. p == NULL

C. p->next ==headD . p == head

19.在循环双链表的p 所指的结点之前插入s 所指结点的操作是D。

A . p->prior = s ; s->next = p ; p->prior->next = s ; s->prior = p->prior

B. p->prior = s ; p->prior->next = s ;s->next = p ; s->prior = p->prior

C. s->next = p ; s->prior = p->prior ; p->prior = s ; p->prior->next = s

2

D. s->next = p ; s->prior = p->prior ;p->prior->next = s ; p->prior = s

20.如果最常用的操作是取第i 个结点及其前驱,则采用D存储方

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴为你解答。C语言实现定长顺序存储串的方法如下: 首先,我们需要定义一个固定长度的字符数组来存储串,如下所示: ``` #define MAXLEN 100 // 定义最大长度 typedef struct { char data[MAXLEN]; // 存储串的字符数组 int length; // 串的长度 } SqString; // 顺序存储结构体 ``` 接下来,我们需要实现一些基本操作,如串的初始化、清空、求长度、比较、连接、子串等,具体实现如下: ``` // 初始化串 void InitString(SqString *s, char *str) { int len = strlen(str); if (len > MAXLEN) { len = MAXLEN; } for (int i = 0; i < len; i++) { s->data[i] = str[i]; } s->length = len; } // 清空串 void ClearString(SqString *s) { s->length = 0; } // 求串长度 int Length(SqString s) { return s.length; } // 比较两个串 int StrCompare(SqString s1, SqString s2) { int len = s1.length < s2.length ? s1.length : s2.length; for (int i = 0; i < len; i++) { if (s1.data[i] != s2.data[i]) { return s1.data[i] - s2.data[i]; } } return s1.length - s2.length; } // 串连接 void Concat(SqString *s, SqString s1, SqString s2) { int len = s1.length + s2.length; if (len > MAXLEN) { len = MAXLEN; } for (int i = 0; i < s1.length; i++) { s->data[i] = s1.data[i]; } for (int i = 0; i < s2.length && i < MAXLEN - s1.length; i++) { s->data[s1.length + i] = s2.data[i]; } s->length = len; } // 取子串 void SubString(SqString *sub, SqString s, int pos, int len) { if (pos < 1 || pos > s.length || len < 0 || len > s.length - pos + 1) { return; } for (int i = 0; i < len; i++) { sub->data[i] = s.data[pos + i - 1]; } sub->length = len; } ``` 通过以上代码,我们便可以实现定长顺序存储串的基本操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值