数据结构第1阶段练习题
- 格式:doc
- 大小:215.50 KB
- 文档页数:5
第一阶段练习题
考试科目:《数据结构》第一章至第四章(总分100分)
______________学习中心(教学点)批次:层次:
专业:学号:身份证号:
姓名:得分:
一、选择题(每题3分,共30分)
1、在树形结构中,数据元素间存在()的关系。
A、一对一B、一对多C、多对多D、除同属一个集合外别无关系
2、下列说法中错误的是()。
A、数据对象是数据的子集
B、数据元素间关系在计算机中的映象即为数据的存储结构
C、非顺序映象的特点是借助指示元素存储地址的指针来表示数据元素间逻辑关系
D、抽象数据类型指一个数学模型及定义在该模型上的一组操作
3、下列不属算法特性的是()。
A、有穷性B、确定性C、零或多个输入D、健壮性
4、在长为n的顺序表中删除一个数据元素,平均需移动()个数据元素。
A、n B、n-1 C、n/2 D、(n-1)/2
5、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
A、顺序表B、双链表C、带头结点的双向循环链表D、单循环链表
6、在一个可存放n个数据元素的顺序栈中,假设以高地址端为栈底,以top为栈顶指针,当向栈中压入一个数据元素时,top的变化是()。
A、不变B、top=n C、top++ D、top--
7、设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则删除一个结点的操作是()。
A、rear=front->next B、rear=rear->next C、front=front->next D、front=rear->next 8、判定一个栈顶指针为S且不带头结点的链栈为空栈的条件是()。
A、S B、S->next C、S->next==NULL D、!S
9、设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则判定该队中只有一个结点的条件是()。
A、front->next B、rear->next C、front==rear D、front!=rear
10、串的长度是指()。
A、串中所含不同字母的个数
B、串中所含字符的个数
C、串中所含不同字符的个数
D、串中所含非空格字符的个数
二、(10分)
设n为正整数,试确定如下程序段中语句“x++;”的频度。
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
for (k=1;k<=n;k++)
x++;
三、(15分)
设单链表L如图所示:
画出执行如下程序段后,各指针变量及单链表L的示意图。
p=L;
for(i=1;i<=3;i++){
q=(LinkList)malloc(sizeof(LNode));
q->data=i*3;
q->next=p->next;
p->next=q;
}
四、(10分)
设元素的入栈次序为a、b、c、d,且在入栈的过程中允许出栈,试写出所有不可能得到的出栈序列。
五、(15分)
设a='data structure',b='computer',c='demo',试求:
⑴ StrLength(a)的返回值;
⑵执行StrInsert(b,4,c)后串b的值;
⑶ Index(a,'u',10)的返回值;
⑷执行Replace(a,'structure',b)后串a的值;
⑸执行SubString(s,b,3,3)后串s的值。
六、(20分)
已知单链表L中含有三类字符的数据元素,即字母字符、数字字符和其他字符,试编写算法将L分割为三个循环链表,其中每个循环链表只含一类字符。
答案
一、选择题
1、B
2、B
3、D
4、D
5、A
6、D
7、C
8、D
9、C
10、B
二、设n为正整数,试确定如下程序段中语句“x++;”的频度。
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
for (k=1;k<=n;k++)
x++;
答:
2)1
(2
n
n
三、设单链表L如图所示:
画出执行如下程序段后,各指针变量及单链表L的示意图。
p=L;
for(i=1;i<=3;i++){
q=(LinkList)malloc(sizeof(LNode));
q->data=i*3;
q->next=p->next;
p->next=q;
}
答:
四、设元素的入栈次序为a、b、c、d,且在入栈的过程中允许出栈,试写出所有不可能得到的出栈序列。
答:
dabc dacb dbac dbca dcab cadb cabd cdab bdac adbc
五、设a='data structure',b='computer',c='demo',试求:
⑴ StrLength(a)的返回值;
⑵执行StrInsert(b,4,c)后串b的值;
⑶ Index(a,'u',10)的返回值;
⑷执行Replace(a,'structure',b)后串a的值;
⑸执行SubString(s,b,3,3)后串s的值。
答:
⑴14
⑵'comdemoputer'
⑶12
⑷'data computer'
⑸'mpu'
六、已知单链表L中含有三类字符的数据元素,即字母字符、数字字符和其他字符,试编写算法将L分割为三个循环链表,其中每个循环链表只含一类字符。
答:
void partition(LinkList &L,LinkList &LC,LinkList &LN,LinkList &LO){
//L带头结点,LC为含字母字符的循环链表,LN为含数字字符的循环链表,
//LO为含其他字符的循环链表