找套数据结构的题以及答案

1到5章之内的 简单一点的

数据结构》单元测验(1-5)

一、 选择题
1.数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称,而( B )是数据不分割的最小单位。
A. 数据元素 B.数据项
C.数据对象 D.数据结构
2.下面程序段的时间复杂度为( C )
for(i=0;i<m;i++)
for(j=0;j<n;j++)
a[i][j]=i*j;
A.O(n2) B.O(m2) C.O(m*n) D.O(m+n)
3.在一个单链表L中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行( D )。
A.q一>next=p一>next;p一>next=q;
B.p一>next=q一>next;q=p;
C.q一>next=p一>next;p一>next=q;
D.p一>next=q一>next; q一>next=p;
4.当利用大小为N的一维数组顺序存储一个循环队列时,该队列的最大长度为( B )
A.N-2 B.N-1 C.N D.N+1
5.若编号为1,2,3,4,5,6的六节车厢依次通过一段栈形轨道,则在出口处不可能得到( D )
A.143562 B.456321 C.145326 D.426531
6.假设一个循环队列的队首和队尾指针分别为f和r,则判断队空的条件是( D )
A.f+1==r B.r+1==f C.f==0 D.f==r
7.经过下列栈的运算后栈顶的值是( A )
InitStack(s);Push(s,a), Push(s,b);Pop(s);
A.a B.b C.1 D.2
8.单链表中,增加头结点的目的是为了( C )
A.链表至少有一个结点
B.标示表结点中首结点的位置
C.方便运算的实现
D.说明单链表是线性表的链式存储结构
二、 填空题
1.数据结构一般包括以下三个方面的内容:( 逻辑结构 )、( 存储结构 )、( 运算集合 )。
2.数据的逻辑结构被分为( 集合 )、 ( 线性 )、 ( 树形 )和( 图形 )四种。
3.假设有二维数组A8×6,每个元素用相邻的4个字节存储,存储器按字节编址。已知A的起始存储位置(基地址)为2000,若按行存储时,元素A41的第一个字节地址为( 2100 );若按列存储时,元素A74的第一个字节地址为( 2156 )。
4.栈是一种特殊的线性表,允许插入和删除运算的一端称为( 栈顶 )。不允许插入和删除运算的一端称为( 栈低 )。
5.向一个长度为n的顺序表的第i个元素之前插入一个元素时,需向后移动( n-i+1 )个元素。
三、判断题
( 错 )1.链表的每个结点都恰好包含一个指针。
( 错 )2.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
( 对 )3.栈和队列的存储方式既可以是顺序方式,也可以是链接方式。
( 错 )4.一个栈的输入序列是12345,则栈的输出序列不可能是12345。
( 错 )5.链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。
( 错 )6.顺序表适合进行顺序存取,而链表适合进行随机存取。
( 对 )7.对矩阵进行压缩存储是为了节省存储空间。
( 错 )8.顺序存储方式只能用于存储线性结构。
四、 简述以下算法的功能
1. Status algo1(Stack s,int e)
{ Stack T;int d;
InitStack(T);
While(!StackEmpty(S))
{Pop(S,d);
if(d!=e) Push(T,d);
}
While(!StackEmpty(T))
Pop(T,d);Push(S,d);
答:通过T的帮助将S中的e元素清除
}}
2. void algo2(Queue &Q)
{ Stack S;int d;
InitStack(S);
While(!QueueEmpty(Q))
{DeQueue(Q,d); Push(S,d);}
While(!StackEmpty(S))
{Pop(S,d);
EnQueue(Q,d);}}
答:通过栈S的帮助实现队列Q的逆置
五、 算法设计
编写算法,实现顺序表上的逆置运算。
void reverse(int a[],int n)
{
int i;
for(i=0;i<n/2;i++)
{
push(s,a[i]);
a[i]=a[n-i-1];
pop(s,a[n-i-1]);
}
}
温馨提示:答案为网友推荐,仅供参考
相似回答