- 12
- 0
- 约5.7千字
- 约 5页
- 2021-04-20 发布于山东
- 举报
第1章 绪论
习题
1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储
结构、抽象数据类型。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
3.简述逻辑结构的四种基本关系并画出它们的关系图。
4.存储结构由哪两种基本的存储方法实现?
5.选择题
( 1)在数据结构中,从逻辑上可以把数据结构分成( )。
A.动态结构和静态结构 B .紧凑结构和非紧凑结构
C.线性结构和非线性结构 D .内部结构和外部结构
( 2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的(
A.存储结构 B .存储实现
C.逻辑结 构 D .运算实现
( 3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着(
)。
)。
.数据具有同一特点
B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样
D.数据元素所包含的数据项的个数要相等
( 4)以下说法正确的是( )。
A.数据元素是数据的最小单位
B.数据项是数据的基本单位
C.数据结构是带有结构的各数据项的集合
D. 一些表面上很不相同的数据可以有相同的逻辑结构
( 5)以下与数据的存储结构无关的术语是( )。
A.顺序队列 B. 链表 C. 有序表
( 6)以下数据结构中, ( )是非线性数据结构
A.树 B .字符串 C .队 D
D.
.栈
链栈
6.试分析下面各程序段的时间复杂度。
1) x=90; y=100; while(y0)
if(x100)
{x=x-10;y--;}
else x++;
2) for (i=0; in; i++) for (j=0; jm; j++)
a[i][j]=0;
3) s=0;
for i=0; in; i++)
for(j=0; jn; j++)
s+=B[i][j];
sum=s;
4) i=1; while(i=n)
i=i*3;
5) x=0;
for(i=1; in; i++)
for (j=1; j=n-i; j++)
x++;
( 6) x=n;
n ext=s; (*s).next=(*p).next;
C. s-next=p-next; p-next=s-next;
D. s-next=p-next; p-next=s;
(14) 在双向链表存储结构中,删除
p 所指的结点时须修改指针(
)。
A. p-next-prior=p-prior; p-prior-next=p-next;
B. p-next=p-next-next; p-next-prior=p;
C. p-prior-next=p; p-prior=p-prior-prior;
D. p-prior=p-next-next; p-next=p-prior-prior;
(15) 在双向循环链表中,在 p 指针所指的结点后插入
的操作是( )。
q 所指向的新结点,其修改指针
A. p-next=q; q-prior=p; p-next-prior=q; q-next=q;
B. p-next=q; p-next-prior=q; q-prior=p; q-next=p-next;
C. q-prior=p; q-next=p-next; p-next-prior=q; p-next=q;
D. q-prior=p; q-next=p-next; p-next=q; p-next-prior=q;
2.算法设计题
1)将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间 , 不另外占用其它的存储空间。表中不允许有重复的数据。
void MergeList_L(LinkList La,LinkList Lb,LinkList Lc){
pa=La-next; pb=Lb-next;
Lc=pc=La; // 用 La 的头结点作为 Lc 的头结点
while(pa pb){
if(pa-datapb-data){ pc-next=pa;pc=pa;pa=pa-next;}
else if(pa-datapb-data) {pc-next=pb; pc=pb; pb=pb-next;}
else {// 相等时取 La 的元素,删除 Lb 的元素
pc-next=pa;pc=pa;pa=pa-next;
q=pb-next;delete pb ;pb =q;}
}
pc-next=pa?pa:pb;
delete Lb; //
//
插入剩余段
释放 Lb 的头结点
}
2)将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间 , 不另外占用其
原创力文档

文档评论(0)