把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为( )。
逻辑结构
物理结构
算法的具体实现
给相关变量分配存储单元
答案是:物理结构
下列说法中,不正确的是( )。
数据元素是数据的基本单位
数据项是数据中不可分割的最小可标识单位
数据可有若干个数据元素构成
数据项可由若干个数据元素构成
答案是:数据项可由若干个数据元素构成
一个存储结点存储一个( )。
数据项
数据元素
数据结构
数据类型
答案是:数据元素
数据结构中,与所使用的计算机无关的是数据的( )。
存储结构
物理结构
逻辑结构
物理和存储结构
答案是:逻辑结构
在线性表的顺序结构中,以下说法正确的是( )。
逻辑上相邻的元素在物理位置上不一定相邻
数据元素是不能随机访问的
逻辑上相邻的元素在物理位置上也相邻
进行数据元素的插入、删除效率较高
答案是:逻辑上相邻的元素在物理位置上也相邻
对链表, 以下叙述中正确的是( )。
不能随机访问任一结点
结点占用的存储空间是连续的
插入删除元素的操作一定要要移动结点
可以通过下标对链表进行直接访问
答案是:不能随机访问任一结点
下列的叙述中,不属于算法特性的是( )。
有穷性
输入性
可行性
可读性
答案是:可读性
算法的时间复杂度与( )有关。
所使用的计算机
计算机的操作系统
算法本身
数据结构
答案是:算法本身
设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为( )。
n-i+1
n-i
n-i-1
i
答案是:n-i+1
设有一个长度为n的顺序表,要删除第i个元素移动元素的个数为( )。
n-i+1
n-i
n-i-1
i
答案是:
在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句( )。
p=q->next
p->next=q
p->next=q->next
q->next=NULL
答案是:
在一个单链表中p所指结点之后插入一个s所指的结点时,可执行( )。
p->next= s; s->next= p->next
p->next=s->next;
p=s->next
s->next=p->next; p->next=s;
答案是:
非空的单向循环链表的尾结点满足( )(设头指针为head,指针p指向尾结点)。
p->next==head
p==NULL
p->next==NULL
p== head
答案是:
链表不具有的特点是( )。
可随机访问任一元素
插入删除不需要移动元素
不必事先估计存储空间
逻辑上相邻的元素在物理位置上不一定相邻
答案是:
带头结点的链表为空的判断条件是( )(设头指针为head)。
head ==NULL
head->next==NULL
head->next==head
head!=NULL
答案是:
在一个长度为n的顺序表中为了删除第5个元素,由第6个元素开始从后到前依次移动了15个元素。则原顺序表的长度为( )。
21
20
19
25
答案是:
有关线性表的正确说法是( )。
每个元素都有一个直接前驱和一个直接后继
线性表至少要求一个元素
表中的元素必须按由小到大或由大到下排序
除了一个和最后一个元素外,其余元素都有一个且仅有一个直接前驱和一个直接后继
答案是:
向一个有127个元素的顺序表中插入一个新元素,并保持原来的顺序不变,平均要移动( )个元素。
8
7
63
63.5
答案是:
一个顺序表第一个元素的存储地址是90,每个元素的长度为2,则第6个元素的地址是( )。
98
100
102
106
答案是:
在一个不带头结点的单循环链表中,p、q分别指向表中第一个结点和尾结点,现要删除第一个结点,且p、q仍然分别指向新表中第一个结点和尾结点。可用的语句是p=p->next;和( )。
p=q->next
p->next=q
q=p
q->next=p
答案是:
数据元素可以有一个或多个数据项组成。
对
错
答案是:
数据元素之间的抽象关系称为物理结构。
对
错
答案是:
数据的逻辑结构在计算机中的表示称为逻辑结构。
对
错
答案是:
数据的逻辑结构是与存储该结构的计算机相关的。
对国开形考答案open5.net或联系QQ/微信:18866732
错
答案是:
数据结构中,元素之间存在多对多的关系称为树状结构。
对
错
答案是:
通常可以把一本含有不同章节的书的目录结构抽象成线性结构。
对
错
答案是:
通常可以把某城市中各公交站点间的线路图抽象成树型结构。
对
错
答案是:
设有一个不带头结点的单向循环链表,结点的指针域为next,指针p指向尾结点,现要使p指向第一个结点,可用语句p=p->next;。
对
错
答案是:
设有一个单向链表,结点的指针域为next,头指针为head,p指向尾结点,为了使该单向链表改为单向循环链表,可用语句p->next=head 。
对
错
答案是:
设有一个单向循环链表,结点的指针域为next,头指针为head,指针p指向表中某结点,若逻辑表达式p->next==head;的结果为真,则p所指结点为尾结点。
对
错
答案是:
要在一个单向链表中p所指向的结点之后插入一个s所指向的新结点,若链表中结点的指针域为next,可执行 p->next=s; s->next= p->next;的操作。
对
错
答案是:
要在一个单向链表中删除p所指向的结点,已知q指向p所指结点的直接前驱结点,若链表中结点的指针域为next,则可执行q->next= p->next;
对
错
答案是:
要在一个带头结点的单向循环链表中删除头结点,得到一个新的不带头结点的单向循环链表,若结点的指针域为next,头指针为head,尾指针为p,则可执行head=head-> next; p->next=head;。
对
错
答案是:
设有一个单向循环链表,头指针为head,链表中结点的指针域为next,p指向尾结点的直接前驱结点,若要删除尾结点,得到一个新的单向循环链表,可执行操作p->next=head;。
对
错
答案是:
设线性表以不带头结点的单向链表存储,链表头指针为head,以下程序的功能是输出链表中各结点中的数据域data,完成程序中空格部分。
#define NULL 0
void main( )
{ NODE *head ,*p ;
p=head; /*p为工作指针*/
do
{printf(“%d\n”, __(1)__;
__(2)__;
}while__(3)__;
}
答案是:
设有一个头指针为head的不带头结点单向链表,p、q是指向链表中结点类型的指针变量,p指向链表中结点a, (设链表中没有结点的数据域与结点a的数据域相同),写出相关语句
(1)使该单向链表成为单向循环链表
(2)插入结点s,使它成为a结点的直接前驱
q=p; x=p->data;
while __(1)__)q=q->next;
q->next=head;
q=p; p=p->next;
while(p->data!=x)
{ q=p;
__(2)__
}
s->next=p;
__(3)__
答案是:
若让元素1,2,3依次进栈,则出栈顺序不可能为( )。
3,2,1
2,1,3
3,1,2
1,3,2
答案是:
一个队列的入队序列是1,2,3,4。则队列的输出序列是( )。
4,3,2,1
1,2,3,4
1,4,3,2
3,2,4,1
答案是:
向顺序栈中压入新元素时,应当( )。
先移动栈顶指针,再存入元素
先存入元素,再移动栈顶指针
先后次序无关紧要
同时进行
答案是:
在一个栈顶指针为top的链栈中,将一个p指针所指的结点入栈,应执行( )。
top->next=p;
p->next=top->next;top->next=p;
p->next=top;top=p;
p->next=top->next;top=top->next;
答案是:
在一个栈顶指针为top的链栈中删除一个结点时,用 x保存被删结点的值,则执行( )。
x=top;top=top->next;
x=top->data;
top=top->next;x=top->data;
x=top->data;top=top->next;
答案是:
判断一个顺序队列(最多元素为m)为空的条件是( )。
rear==m-1
front==rear
rear=m
front==rear+1
答案是:
判断一个循环队列为满的条件是( )。
rear=MaxSize
front==rear+1
(rear+1)%MaxSize==front
rear%MaxSize= =front
答案是:
判断栈满(元素个数最多n个)的条件是( )。
top==0
top!=0
top==n-1
top=-1
答案是:
设有一个20阶的对称矩阵A(第一个元素为a1,1),采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始), 则矩阵元素a6,2在一维数组B中的下标是( )。
21
17
28
23
答案是:
在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写入缓冲区中,而打印机则从缓冲区中取出数据打印,该缓冲区应该是一个( )结构。
堆栈
队列
数组
线性表
答案是:
一个递归算法必须包括( )。
递归部分
终止条件和递归部分
迭代部分
终止条件和迭代部分
答案是:
在一个链队中,假设f和r分别为队头和队尾指针,则删除一个结点的运算为( )。
r=f->next;
r=r->next;
f=f->next;
f=r->next;
答案是:
在一个链队中,假设f和r分别为队头和队尾指针,则插入s所指结点的运算为( )。
f->next=s;f=s;
r->next=s;r=s;
s->next=r;r=s;
s->next=f;f=s;
答案是:
数组a经初始化char a[ ]=“English”;a[7]中存放的是( )。
字符串的结束符
字符h
“h”
变量h
答案是:
设主串为“ABcCDABcdEFaBc”,以下模式串能与主串成功匹配的是( )。
Bcd
BCd
ABC
Abc
答案是:
字符串 a1=”AEIJING”,a2=”AEI”,a3=”AEFANG”,a4=”AEFI”中最大的是( )。
a1
a2
a3
a4
答案是:
两个字符串相等的条件是( )。
两串的长度相等
两串包含的字符相同
两串的长度相等,并且两串包含的字符相同
两串的长度相等,并且对应位置上的字符相同
答案是:
一维数组A采用顺序存储结构,每个元素占用6个字节,第6个元素的存储地址为100,则该数组的首地址是( )。
64
28
70
90
答案是:
一个非空广义表的表头( )。
不可能是原子
只能是子表
只能是原子
可以是子表或原子
答案是:
对稀疏矩阵进行压缩存储,可采用三元组表,一个10 行8列的稀疏矩阵A,其相应的三元组表共有6个元素,矩阵A共有( )个零元素。
8
72
74
10
答案是:
对稀疏矩阵进行压缩存储,可采用三元组表,一个10 行8列的稀疏矩阵A共有73个零元素,A的右下角元素为6,其相应的三元组表中的第7个元素是( )。
(10,8,6)
(10,8,7)
(7,10,8)
(7,8,10)
答案是:
对一个栈顶指针为top的链栈进行入栈操作,通过指针变量p生成入栈结点,并给该 结点赋值a,则执行: p=(struct node *)malloc(sizeof(struct node);p->data=a;和( )。
p->next=top;top=p;
top->next=p;p=top;
top=top->next;p=top;
p->next=top;p=top;
答案是:
头指针为head的带头结点的单向链表为空的判定条件是( )为真。
head==NULL
head->next!=NULL
head->next==NULL
head->next!=NULL
答案是:
设有一个对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),B数组共有55个元素,则该矩阵是( )阶的对称矩阵。
5
20
10
15
答案是:
数组a经初始化char a[ ]=“English”;a[1]中存放的是( )。
字符n
字符E
“n”
“E”
答案是:
设有一个链栈,栈顶指针为hs,现有一个s所指向的结点要入栈,则可执行操作。hs=s;
s-> next=hs;
对
错
答案是:
设有一个非空的链栈,栈顶指针为hs,要进行出栈操作,用x保存出栈结点的值,栈
结点的指针域为next,则可执行hs=hs->next ;x=hs->data;
对
错
答案是:
有一个链栈,栈顶指针为h,现有一个p所指向的结点要入栈,则可执行操作p->next=h;
和h=p;
对
错
答案是:
设有一个非空的链栈,栈顶指针为hs,要进行出栈操作,用x保存出栈结点的值,栈结点的指针域为next,数据域为data,则可执行hs= hs->next; x= hs->data;
对
错
答案是:
在一个链队中,f和r分别为队头和队尾指针,队结点的指针域为next,则插入所指结点的操作为r->next=s;r=s;
对
错
答案是:
在一个链队中,f和r分别为队头和队尾指针,队结点的指针域为next,s指向一个要入 队的结点,则入队操作为r=s;r->next=s;
对
错
答案是:
在一个不带头结点的非空链队中,f和r分别为队头和队尾指针,队结点的数据域为data,指针域为next,若要进行出队操作,并用变量x存放出队元素的数据值,则相关操作为x=f->data; f=f->next;
对
错
答案是:
对稀疏矩阵进行压缩存储,可采用三元组表,一个6行7列的稀疏矩阵A相应的三元组表共有8个元素,则矩阵A共有34个零元素。
对
错
答案是:
循环队列的最大存储空间为MaxSize,队头指针为f,队尾指针为r,当(r+1)%MaxSize=f 时表明队列已满。
对
错
答案是:
循环队列的队头指针为f,队尾指针为r,当r= =f时表明队列已满。
对
错
答案是:
空串的长度是0;空格串的长度是空格字符的个数。
对
错
答案是:
对稀疏矩阵进行压缩存储,矩阵中每个非零元素对应的三元组包括该元素的行下标、列下标、和非零元素值三项信息。
对
错
答案是:
循环队列的引入,目的是为了克服假上溢。
对
错
答案是:
设有n阶对称矩阵A,用一维数组s压缩存储A的下三角元素,s的下标从零开始,元素 s[26]相应于A中的元素为a 7,5。
对
错
答案是:
循环队列的最大存储空间为MaxSize=6,采用少用一个元素空间以有效的判断栈空或栈满,若队头指针front=4,当队尾指针rear=3时队满。
对
错
答案是:
循环队列的最大存储空间为MaxSize=6,采用少用一个元素空间以有效的判断栈空或栈满,若队头指针front=4,队尾指针rear=3时,队列中共有5个元素。
对
错
答案是:
以下函数为链栈的进栈操作,x是要进栈的结点的数据域,top为栈顶指针
struct node
{ ElemType data;
struct node *next;
};
struct node *top ;
void Push(ElemType x)
{
struct node *p;
p=(struct node*)malloc __(1)__;
p->data=x;
__(2)__;
__(3)__;
}
答案是:
以下函数为链队列的入队操作,x为要入队的结点的数据域的值,front、rear分别链队列的队头、队尾指针
struct node
{ ElemType data;
struct node *next;
};
struct node *front,*rear;
void InQueue(ElemType x)
{
struct node *p;
p= (struct node*) malloc __(1)__;
p->data=x;
p->next=NULL;
__(2)__;
rear= __(3)__;
}
答案是:
假定一棵二叉树中,双分支结点数为15,单分支结点数为30,则叶子结点数为( )。
15
16
17
47
答案是:
二叉树第k层上最多有( )个结点。
2k
2k-1
2k-1
2k-1
答案是:
将含有150个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点的编号为1,则编号为69的结点的双亲结点的编号为( )。
33
34
35
36
答案是:
如果将给定的一组数据作为叶子数值,所构造出的二叉树的带权路径长度最小,则该树称为( )。
哈夫曼树
平衡二叉树
二叉树
完全二叉树
答案是:
在一棵度具有5层的满二叉树中结点总数为( )。
31
32
33
16
答案是:
一棵完全二叉树共有6层,且第6层上有6个结点,该树共有( )个结点。
38
72
31
37
答案是:
利用3、6、8、12这四个值作为叶子结点的权,生成一棵哈夫曼树,该树中所有叶子结点中的最长带权路径长度为( )。
18
16
12
30
答案是:
在一棵树中,( )没有前驱结点。
分支结点
叶结点
树根结点
空结点