数据结构单元4练习

发布 2019-07-11 05:08:37 阅读 2475

(15) 在一个链队列中,若队首指针为front,队尾指针为rear,则判断该队列只有一个结点的条件为。

或。16) 向一个循环队列中插入元素时,首先要判断然后再向指针所指的位置写入新的数据。

17) 读队首元素的操作队列元素的个数。

18) 设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有 front=11,rear=19,则循环队列中还有个元素。

19)队列q,经过下列运算:initqueue(q)(初始化队列);inqueue(q,a); inqueue(q,b);outqueue(q,x); readfront(q,x);qempty(q);后的值是。

20)队列q经过initqueue(q)(初始化队列);inqueue(q,a);inqueue(q,b); readfront(q,x)后,x的值是。

三.选择题。

1)队列是限定在( )进行操作的线性表。

a.中间b.队首c.队尾d.端点。

2)队列中的元素个数是( )

a.不变的b.可变的 c.任意的d.0

3)同一队列内各元素的类型( )

a.必须一致b.不能一致 c.可以不一致 d.不限制。

4)队列是一个( )线性表结构。

a.不加限制的 b.推广了的c.加了限制的 d.非。

5)当利用大小为n的数组顺序存储一个队列时,该队列的最后一个元素的下标为( )

a.n-2b.n-1c.nd.n+1

6)一个循环队列一旦说明,其占用空间的大小( )

a.已固定 b.可以变动 c.不能固定 d.动态变化。

7)循环队列占用的空间( )

a.必须连续b.不必连续 c.不能连续 d.可以不连续。

8)存放循环队列元素的数组data有10个元素,则data数组的下标范围是( )

a.0..10 b.0..9c.1..9d.1..10

9)若进队的序列为:a,b,c,d,则出队的序列是( )

a.b,c,d,ab.a,c,b,d

c.a,b,c,dd.c,b,d,a

10)四个元素按:a,b,c,d顺序连续进队q,则队尾元素是( )

a. ab. b

c. cd. d

11)四个元素按:a,b,c,d顺序连续进队q,执行一次outqueue(q)操作后,队头元素是( )

a. ab. bc. cd. d

12)四个元素按:a,b,c,d顺序连续进队q,执行四次outqueue(q)操作后,再执行qempty(q);后的值是( )

a. 0b. 1c. 2d. 3

13)队列q,经过下列运算后,x 的值是( )

initqueue(q)(初始化队列);inqueue(q,a); inqueue(q,b);outqueue(q,x);

readfront (q,x);

a.ab.bc.0d.1

14)循环队列sq队满的条件是( )

a.sq->rear==sq->frontb.(sq->rear+1)% maxlen ==sq->front

c.sq->rear==0d.sq->front==0

15)设链栈中结点的结构:data为数据域,next为指针域,且top是栈顶指针。若想在链栈的栈顶插入一个由指针s所指的结点,则应执行下列( )操作。

a.s->next=top->next;top->next=s; b.top->next=s;

c.s->next=top;top=top->nextd.s->next=top;top=s;

16)带头结点的链队列lq示意图如下,链队列的队头元素是( )

lq->front

lq->rear

a.ab.bc.cd.d

17)带头结点的链队列lq示意图如下,指向链队列的队头指针是( )

lq->front

lq->rear

a.lq->frontb.lq->rear

c.lq->front->nextd.lq->rear->next

18)带头结点的链队列lq示意图如下,在进行进队运算时指针lq->front( )

lq->front

lq->rear

a.始终不改变 b.有时改变 c.进队时改变d.出队时改变。

19)队列q,经过下列运算后,再执行qempty(q) 的值是( )

initqueue(q) (初始化队列);inqueue(q,a); inqueue(q,b);outqueue(q,x);

readqueue(q,x);

a.ab.bc.0d.1

20)若用一个大小为6的数组来实现循环队列,且当前front和rear的值分别为3和0,当从队列中删除一个元素,再加入两个元素后,front和rear的值分别为( )

a.5和1b.4和2c.2和4d.1和5

四. 写出程序运行的结果。

写出下列程序段的输出结果(队列中的元素类型为char)。

void main( )

queue q; initqueue (q初始化队列。

char x="e"; y="c";

inqueue (q, "h");

inqueue (q, "r");

inqueue (q, y);

outqueue (q,x); inqueue (q,x);

outqueue (q,x); inqueue (q, "a");

while (!qempty(q))

outqueue (q,y);

printf(y);

printf(x);

五.程序填空。

1.假定用一个循环单链表表示一个循环队列,该队列只设一个队尾指针rear,试填空完成向循环队列中插入一个元素为x的结点的函数。

typedef struct queuenode定义队列的存储结构。

int data;

struct queuenode *next;

qu;inqueue(rear,x向队列插入元素为x的函数。

qu *rear;

int x;

qu *head,*s;

ss->data

if (rear==null循环队列为空,则建立一个结点的循环队列。

else head循环队列非空,则将s插到后面。

rear->next= ;

rear=s;

head;}

六。 算法设计题。

1.设一个循环队列queue,只有头指针front,不设尾指针,另设一个含有元素个数的记数器cont,试写出相应的入队算法和出队算法。

2.用一个循环数组q[0..maxlen-1]表示队列时,该队列只有一个头指针front,不设尾指针,而改置一个记数器count用以记录队列中结点的个数。试编写一个能实现:

初始化队列、判队空、读队头元素、入队操作和出队操作的算法。

3.一个用单链表组成的循环队列,只设一个尾指针rear,不设头指针,请编写他如下算法:

1) 向循环队列中插入一个元素为x的结点;

2) 从循环队列中删除一个结点。

数据结构练习4 二叉树

一 选择题。1 按照二叉树定义,具有3个结点的二叉树共有 c 种形态。a 3 b 4 c 5d 6 2 具有五层结点的完全二叉树至少有 d 个结点。a 9 b 15 c 31 d 16 3 以下有关二叉树的说法正确的是 b a 二叉树的度为2b 一棵二叉树的度可以小于2 c 至少有一个结点的度为2 ...

数据结构实习报告

精选范文 数据结构实习报告 共2篇 一 需求分析1 程序所实现的功能 2 程序的输入,包含输入的数据格式和说明 3 程序的输出,程序输出的形式 4 测试数据,如果程序输入的数据量比较大,需要给出测试数据 5 合作人及其分工。二 设计说明1 主要的数据结构设计说明 2 程序的主要流程图 3 程序的主要...