数据结构习题集(含答案)(5)

2019-09-01 16:29

2.解:

(1) m的取值为13 (2)

地址 key

0 1 5 2 6 3 5 4 7 5 10 6 7 8 9 10 11 12 11 51 80 75 88 90 102 113 126 11 47 35 23 探测次数 6 习题9参考答案

一、选择题

1. B 2. D 3. B 4. C 5. D 6. C 二、设计题 1. 解:

int QuickSort(SeqList R,int j,int low,int high){ //对R[low..high]快速排序

int pivotpos; //划分后的基准记录的位置

if(low

if (pivotpos==j) return r[j];

else if (pivotpos>j) return(R,j,low,pivotpos-1); else return quicksort(R,j,pivotpos+1,high);

} //QuickSort

2. 解:

void selectsort(linklist head){ RecNode *p,*q,*s;

if(head->next)&&(head->next->next){ p=head->next;//p指向当前已排好序最大元素的前趋

while (p->next){ q=p->next;s=p;

while(q){

if (q->keykey) s=q; q=q->next;

}//endwhile

交换s结点和p结点的数据;

p=p->next; }//endwhile }//endif

20

}//endsort 3. 解:

void QuickSort(SeqList R,int low ,int high){ //对R[low..high]快速排序

int pivotpos;

if(high-low<=2){//若当前区内元素少于3个 //则进行直接插入排序 InsertSort(R,low,high); }else{

pivotpos=midPartion(R,low,high); QuickSort(R,low,pivotpos-1); QuickSort(R,pivotpos+1,high);

}

}//QuickSort

int midPartion(SeqList R,int i, int j){ //三者取中规则定基准 }

if(R[(i+j)/2].key>R[i].key){ 交换R[(i+j)/2]和R[i]; }

if(R[i].key>R[j].key) { 交换R[i]和R[j];} if(R[i].key)

21

一、选择题:

1、研究数据结构就是研究 。

A、数据的逻辑结构 B、数据的存储结构

C、数据的逻辑结构和存储结构 D、 数据的逻辑结构、存储结构及其数据在运算上的实现 2、以下属于逻辑结构的是 。

A、顺序表 B、哈希表 C、有序表 D、单链表 3、具有线性结构的数据结构是 。

A、图 B、树 C、广义表 D、栈 4、数据的 包括集合、栈、树和图结构4种基本类型 A、存储结构 B、逻辑结构 C、基本运算 D、算法描述 5、下面程序的时间复杂度为 。 for (I=0;I

for (j=0;j

A、O(m2) B、O(n2) C、O(m×n) D、O( m+n) 6、一个递归算法必须包括___ ___。

A、递归部分 B、终止条件和递归部分 C、迭代部分 D、终止条件和迭代部分 7、以下说法正确的是___ ___。 A、数据元素是数据的最小单位 B、数据项是数据的基本单位

C、数据结构是带有结构的各数据项的集合

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

二、填空题

1、从一维数组a[n]中顺序查找出一个最大值元素的平均时间复杂性为 ,读取一个二维数组b[m,n]中任一元素的时间复杂性为 。

2、线性结构中元素之间存在 关系,树形结构中元素之间存在 关系,图形结构中元素存在 关系,而集合结构中元素之间不存在 关系。

3、数据结构是研究数据的 和 以及它们之间的相互关系,并对这种结构定义相应的 并设计出相应的 。 4、通常从___ __、__ ___、_ ____、__ ___等4个方面评价算法(包括程序)的质量。

5、数据的___ __结构与数据元素本身的内容和形式无关。

6、程序段“I=1;while(I<=n) I=I*2;”的时间复杂性为___ __。

参考答案:

一、选择题:1、D 2、C 3、D 4、B 5、C 6、B 7、D

二、填空题: 1、O(N) O(1) 2、一对一 一对多 多对多 逻辑 3、物理结构 逻辑结构 算法 算法 4、正确性 易读性 健壮性 高效性 5、逻辑 6、O(log2n)

22

习题二

一、选择题:

1、线性表是具有n个_____的有限序列。

A、表元素 B、字符 C、数据元素 D、数据项 E、信息项 2、若长度为n的线性表采用顺序存储结构,在其第I个位置插入一个新元素算法的时间复杂度为______。

A、O (log2n) B、O(1) C、O(n) D、O (n)

3、已知指针p单链表中某一结点,将新生成的由s所指结点加到p所指结点之后,其语句应为_____。

A、 s-> next=p+1; p->next=s; B、 (*p).next=s;(*s).next=(*p).next; C、 s->next=p->next;p->next=s->next; D、 s->next=p->next;p->next=s;

4、将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是_____。 A、n B、2n-1 C、2n D、n-1 5、线性表L=(a1, a2,?, an),下列说法正确的是_____。 A、每个元素都有一个直接前驱和一个直接后继 B、线性表中至少要有一个元素

C、表中诸元素的排列顺序必须是由小到大或由大到小

D、除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继 6、对单链表表示法,以下说法错误的是_____。 A、数据域用于存储线性表的一个数据元素

B、指针域(或链域)用于存放一个指向本结点所含数据元素的直接后继所在结点的指针 C、所有数据通过指针的链接而组织成单链表

D、NULL称为空指针,它不指向任何结点只起标志作用

7、若给定有n个元素的向量,则建立一个有序单向链表的时间复杂性的量级是 。 A、O(1) B、O(n) C、O (n2) D、O (log2n) 8、单链表的主要优点是_____。

A、便于随机查询 B、存储密度高

C、逻辑上相邻的元素在物理上也是相邻的 D、插入和删除比较方便 9、对一个具有n个元素的线性表,建立其单链表的时间复杂度为_____。 A、O (n) B、O (1) C、O(n2) D、O(nlog2n) 10、循环链表的主要优点是_____

A、不再需要头指针

B、已知某结点位置后能容易找到其直接前趋 C、在进行插入、删除运算时能保证链表不断开 D、从表中任一结点出发都能扫描整个链表

11、对顺序表的优缺点,以下说法错误的是_____。 A、无需为表示结点间的逻辑关系而增加额外的存储空间 B、可以方便地随机存取表中的任一结点

C、插入和删除运算较为方便

D、由于要求占用连续空间,所以存储分配只能预先进行(静态分配) 二、填空题

2

23

1、对于双向链表,在两个结点之间插入一个新结点时需修改的指针共有_____个,单链表为_____个。

2、对一个循环单链表中,表尾结点的指针域与表头指针值_____。

3、在线性表的顺序存储中,元素之间的逻辑关系是通过_____决定的;在线性表的链式存储中,元素之间的逻辑关系是通过_____决定的。

4、单链表表示法的基本思想是用_____表示结点间的逻辑关系。 5、头结点的next 域值是指示单链表的_____。

6、线性表的两种存储结构分别为_____和_____。 7、在线性表的单链表存储中,若一个元素所在结点地址为p,则其后继结点的地址为_____。 8、线性表的逻辑结构是_____结构,其所含结点的个数称为线性表的_____。 9、表长为0的线性表称为_____。

10、通常将链接方式存储的线性表称为_____,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。 参考答案:

一、 选择题:

1、C 2、C 3、D 4、A 5、D 6、C 7、C 8、D

9、A 10、D 11、C 二、 填空题

1、4 2 2、相同 3、物理存储位置 链指针 4、指针 5、第一个数据结点存储地址 6、顺序 链接 7、p->next 8、线性 长度 9、空表 10 链表 三、算法设计

1、假设有两个按元素递增有序排列的线性表A和B,均以单链表作存储结构。请编写算法,将表A和表B归并成一个按元素值非递减有序(允许值相同)排列的线性表C,并要求利用原表(即表A和表B)的结点空间存放表C。 Lklist connect(lklist *a,lklist *b) {lklist *p,*q,*r,*u,*c; p=a->next; q=b->next; C=a; r=a;

while(p!=NULL)&&(q!=NULL) switch

{case p->data>q->data: {u=q->next;

r=q; q->next=p; q=u;

}

case p->data<=q->data; {r=p; p=p->next; }}

if(q!=NULL) r>next=q;

r->next=q; return(c);}

2、设有头结点的单链表L,编程对表中任一值只保留一个结点,删除其余值相同的结点。 DelElem(lklist *L); {pointer *p, *t,*pre; p=L->link; t=p;

while(p!=NULL) {pre=t; t=t->link; do

24


数据结构习题集(含答案)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:给动物施食得大财富仪轨

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: