计算机软件技术基础试题答案

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

《计算机软件技术基础》试题

1•线性表的链式存储结构与顺序存储结构相比优点是 CD 。

A.

所有的操作算法实现简单 B.便于随机存取 C. 便于插入和删除 D.便于利用零散的存储器空间 2•线性表是具有n 个 C 的有限序列。 A. 表元素

B.字符

C.数据元素

D. 数据项

E.信息项

3•若长度为n 的线性表采用顺序存储结构,在其第

I 个位置插入一个新元素的算法的时间复

杂度为 _______ C 。(1 < K n+1) A. 0(0) B. 0(1) C. 0( n)

D. 0(n 2) 4.设A 是一个线性表(a i ,a 2,…n a ,采用顺序存储结构,则在等概率的前提下,平均每插入一 个元素需

要移动的元素个数为

B

,平均每删除一个元素需要移动的元素个数为

n

B. -

2 3n 1

D.

4

时的无穷大阶数,最大的是 _

B. nlogn

D. n!

s 所指结点加到p 所指的结点之后,其语句应为: A. s->n ext=p+1; p->n ext=s; B. (*p). next=s; (*s). next=(*p). next; C. s->n ext=p->n ext; p->n ext=s->n ext; D. s->n ext=p->n ext; p->n ext=s;

7. 将两个各有n 个元素的有序表归并为一个有序表时,其最少的比较次数是 A 。

A. n

B. 2n-1

C. n-1

D. 2n

8.

下面的程序段是合并两个无头结点链表 (ha 和hb)为一个无头结点链表

ha 的过程,作为参

数的两个链表都是按结点的 data 域由大到小链接的。合并后新链表的结点仍按此方式链接。

请填写下述空框,使程序能正确运行。

1.

;若兀素插在

a i 与a i+1之间(0 w K n-1)的概率为 空一,则平均每插入一个

n(n 1)

元素所要移动的元素个数为 n 1 A.

2

2n 1 C.

3

5.

下列函数中,按它们在 n A. log n C.严

n ext

n ext

n ext

#defi ne NULL 0 typedef struct no de{

int data;

struct node *n ext; }no de, li nklisttype;

void combine(linklisttype *ha, linklisttype *hb){

lin klisttype *h, *p;

h = (li nklisttype *)malloc(sizeof(li nklisttype)); h->next = NULL; p = h;

while(ha != NULL && hb != NULL) if(ha->data>=hb->data){

p->n ext = _____ (1) p =

(21

;

⑶ ;

} else{

p->n ext = _____ (4) p = ______ (5)

(61

;

#defi ne true 1 #defi ne false 0 #defi ne NULL 0

typedef struct no de{ int data;

struct node *n ext; }no de, li nklisttype;

int in clusi on (I in klisttype *ha, li nklisttype *hb){ lin klisttype *pa, *pb;

pa = ha->n ext;

/*较大的元素先插入*/

} if(ha==NULL) if(hb==NULL) ha = h->n ext; free(h); } 参考答案:

(7) 18

(2) p->

next

(5)

(1) ha

⑷hb

(7) p->n ext=hb

中所有元素 (a 1,a 2,…角与表

9.如果丰

a 1=

b k ,a 2=b k+1,…a b k+n-1 ),则称表A 包含在表 示有序表A 和B ,下面的函数用于判别表 A 是否包含在表B 中,

回false o (提示:用递归实现) (3) ha=ha->next (6) hb=hb-> next (8) p->n ext=ha 的一个顺序子表

(b k ,b k+1, •••b +n-1)完全相同(即

B 中。设ha , hb 为带头结点的单链表,分别表 若是,则返回true ,否则返

pb = hb->n ext;

(1) ;

while( ⑵)

if(pa->data=pb->data) _______ (3) ____ ;

else _____ (4) _____ ;

_____ (5) ____ ;

}

参考答案:

(1) if(pa==NULL) return(true)

⑵ pb!=NULL && pa->data>=pb->data

(3) retur n(i nclusi on( pa, pb))

(4) pb = pb->n ext;

(5) return(false)

10. 在本题的程序中,函数

create_link_list(n)建立一个具有n个结点的循环链表;函数josephus(n,l,m)对由create_link_list(n)所建立的具有n个结点的循环链表按一定的次序逐个输出,并删除链表中的所有结点。参数n(n>0)指明循环链表的结点个数,参数1(1 w K n)指明起始结点,参数m ( m>0是步长),指明从起始结点或前次被删除并输出的结点之后的第m 个结点作为本次被输出并删除的结点。例如,对于下图所示的具有6个结点的循环链表,在

调用josephus(6,3,2)后,将输出5,1,3,6,4,2。请在空框处填上适当内容,每框只填一个语句。

#defi ne NULL 0 typedef struct no de{

int data;

struct node *n ext;

}no de, li nklisttype;

lin klisttype *create _lin k_list(i nt n){

lin klisttype *head, *p, *q;

int I;

head = NULL;

if(n >0){

head = (li nklisttype *)malloc(sizeof(li nklisttype));

p = head;

for(I=1;I<=n-1;l++){ /*此循环用于建立一个链表,链表的内容从1至n-1*/ p->data = I;

q = (li nklisttype *)malloc(sizeof(li nklistttype));

m ;

-------- (2 --------- ;

}

p->data = n;

______ (3) ____ ; /*建立从尾链到首的环形结构*/

retur n( head);

}

相关文档
最新文档