第1章绪论

小测验算法复杂度

1、单选题:
‏下列函数中,哪个函数具有最快的增长速度:‏
选项:
A:
B:
C:
D:
答案: 【 

2、单选题:
‏下面一段代码的时间复杂度是?‏‏if ( A > B ) {    for ( i=0; i<N; i++ )        for ( j=N*N; j>i; j-- )            A += B;}else {    for ( i=0; i<N*2; i++ )        for ( j=N*2; j>i; j-- )            A += B;}‏
选项:
A:
B:
C:
D:
答案: 【 

结构、指针回顾

1、单选题:
struct student‎{   ‎int num;‎char name[10];‎float score;‎}stu;‎则下面的叙述不正确的是 (  )‎‌‎
选项:
A: struct是结构体类型的关键字
B: struct student 是用户定义的结构体类型
C: num, score都是结构体成员名
D: stu是用户定义的结构体类型名
答案: 【 stu是用户定义的结构体类型名

2、单选题:
以下对结构变量stul中成员age的非法引用是( )​struct student{ ​    int age;​ int num;​}stu1,*p;​p=&stu1;​‏​
选项:
A: stu1.age
B: student.age
C: p->age
D:  (*p).age
答案: 【 student.age

3、单选题:
语句int *p;说明了(  )。‍​‍
选项:
A:  p是指向一维数组的指针
B: p是指向函数的指针,该函数返回一int型数据
C: p是指向int型数据的指针
D:  p是函数名,该函数返回一指向int型数据的指针
答案: 【 p是指向int型数据的指针

4、单选题:
有语句:int a[10]; 则对指针变量p的正确定义和初始化语句是( )。‎
选项:
A:  int p=*a;  
B: int *p=a; 
C: int p=&a; 
D:  int *p=&a;
答案: 【 int *p=a; 

5、单选题:
有如下程序​int  a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;​则值为9的表达式是( )​
选项:
A: *P+9
B: *(P+8) 
C: *P+=9
D:  P+8
答案: 【 *(P+8) 

6、单选题:

有如下语句:int m=6,n=9,*p,*q, p=&m; q=&n; 如左图所示,若要实现右图所示的效果,可选用的赋值语句为()。

​选项:
A: *p=*q
B:  p=*q    
C: p=q
D: *p=q
答案: 【 p=q

第2章线性表

小测验链表

1、单选题:
‏对于线性表,在顺序存储结构和链式存储结构中查找第k个元素,其时间复杂性分别是多少?‌
选项:
A: 都是O(1)
B: 都是O(k)
C: O(1)和O(k)
D: O(k)和O(1)
答案: 【 O(1)和O(k)

2、单选题:
某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用(  )存储方式最节省运算时间。‌
选项:
A: 单链表
B: 仅有头指针的单循环链表
C: 双链表
D: 仅有尾指针的单循环链表
答案: 【 仅有尾指针的单循环链表

3、判断题:
下列函数试图求链式存储的线性表的表长,是否正确?​int  Length ( List  *PtrL )​​{    List  *p = PtrL;     ​​     int  j = 0;​​     while ( p ) {​​           p++;​​           j++;                ​​     }  ​​     return  j;​​}​
选项:
A: 正确
B: 错误
答案: 【 错误

小测验顺序表

1、单选题:
在顺序结构表示的线性表中,删除第i个元素(数组下标为i-1),需要把后面的所有元素都往前挪一位,相应的语句是:‏‏for (___________ )‏            PtrL->Data[j-1]=PtrL->Data[j]; ‏‏其中空缺部分的内容应该是‏
选项:
A:  j = i; j< = PtrL->Last; j++
B:  j =PtrL->Last; j>= i;  j--
C:  j = i-1; j< = PtrL->Last; j++
D: j =PtrL->Last; j>= i-1;  j--
答案: 【  j = i; j< = PtrL->Last; j++

2、单选题:
‎对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为( )‎‎‎
选项:
A: O(n)  O(n)
B: O(n)  O(1) 
C: O(1)  O(n)
D: O(1) O(1)
答案: 【 O(1)  O(n)

3、判断题:
‎顺序存储方式的优点是存储密度大,且插入、删除运算效率高。‍
选项:
A: 正确
B: 错误
答案: 【 错误

线性表的测验

1、单选题:
​下面关于线性表的叙述中,错误的是哪一个?(     )‍
选项:
A: 线性表采用顺序存储,必须占用一片连续的存储单元。
B: 线性表采用顺序存储,便于进行插入和删除操作。
C: 线性表采用链接存储,不必占用一片连续的存储单元。
D: 线性表采用链接存储,便于插入和删除操作。
答案: 【 线性表采用顺序存储,便于进行插入和删除操作。

2、单选题:
‍若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用(  )存储方式最节省时间。‏
选项:
A: 顺序表
B: 双链表
C: 带头结点的双循环链表
D: 单循环链表
答案: 【 顺序表

3、单选题:
‏设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用(   )最节省时间。‏
选项:
A: 单链表
B: 单循环链表
C: 带尾指针的单循环链表
D: 带头结点的双循环链表
答案: 【 带头结点的双循环链表

4、单选题:
‏若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为(    )(1<=i<=n+1)。‌
选项:
A:  
B:
C:
D:
答案: 【 

5、单选题:
‍线性表(a1,a2,…,an)以链式方式存储时,访问第i个位置元素的时间复杂度为(    )‍
选项:
A:
B:
C:
D:
答案: 【 

6、单选题:
‌在一个头指针为H的循环单链表中,p 指针指向表尾结点的条件是(     )‏
选项:
A: p->next = H
B: p->next = NULL
C: p->next->next = H
D: p->data = -1
答案: 【 p->next = H

7、单选题:
‌在双向循环链表结点p之后插入结点s的操作是(    )‏
选项:
A: p->next = s; s->prior = p; p->next->prior = s; s->next = p->next;
B: p->next->prior = s; p->next = 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;
答案: 【  s->prior = p; s->next = p->next;  p->next->prior = s; p->next = s;

8、单选题:
​在双向链表结点p之前插入结点q的操作是(   )。​
选项:
A: p->prior = q; q->next = p; p->prior->next = q; q->prior = q;
B: p->prior = q; p->prior->next = q; q->next = p; q->prior = p->prior;
C: q->next = p; q->prior = p->prior; p->prior->next = q; p->prior = q;
D: q->prior = p->priior; q->next = q; p->next = q; p->prior = q;
答案: 【 q->next = p; q->prior = p->prior; p->prior->next = q; p->prior = q;

9、单选题:
‍对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是(    )‎
选项:
A: head==NULL
B: head->next==NULL
C: head->next==head
D: head!=NULL
答案: 【 head->next==NULL

10、单选题:
‎下述哪一条是顺序存储结构的优点?(     )‏
选项:
A: 存储密度大
B: 插入运算方便
C: 删除运算方便
D: 可方便地用于各种逻辑结构的存储表示
答案: 【 存储密度大

11、单选题:
链表不具有的特点是(    )
选项:
A: 插入、删除不需要移动元素
B: 可随机访问任一元素
C: 不必事先估计存储空间
D: 所需空间与线性长度成正比
答案: 【 可随机访问任一元素

12、单选题:
‎在双向链表存储结构中,删除p所指的结点时须修改指针(    )。‏
选项:
A: p->prior->next = p->next; p->next->prior = p->prior;
B: p->prior = p->prior->prior; p->prior->next = p;
C: p->next->prior =

剩余75%内容付费后可查看

发表评论

电子邮件地址不会被公开。 必填项已用*标注