数据结构与算法错题
1、和顺序栈相比,链栈有一个比较明显的优势是:
A、通常不会出现栈满的情况
B、通常不会出现栈空的情况
C、插入操作更容易实现
D、删除操作更容易实现
答案:A;顺序栈是事先确定好大小的,链栈是动态的,它们的区别类似于数组和链表。因为顺序栈用数组实现,必须事先确定栈的大小,对内存的使用效率并不高,无法避免因数组空间用光而引起的溢出问题;而链栈因为动态申请内存,一般不会出现栈满情况。
4、若用数组S[0…n]作为两个栈S1和S2的存储结构,对任何一个栈只有当S全满时才不能做入栈操作。
为这两个栈分配空间的最佳方案是:
A、S1的栈底位置为0,S2的栈底位置为n
B、S1的栈底位置为0,S2的栈底位置为n/2
C、S1的栈底位置为1,S2的栈底位置为n/2
答案:A;栈先入后出,在栈顶的位置经行增删操作,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;栈底的位置不变,栈顶向中间延申。
6、下面()数据结构常用于函数调用:
A、队列 B、栈 C、链表 D、数组
答案:B,栈的特点是先入后出,函数调用是最先调用的最后结束,最后调用的最先完结。
10、设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用()最节省时间:A、单链表
B、单循环链表
C、带尾指针的单循环链表
D、带头结点的双循环链表
答案:D;C增加方便但是删除不方便。
12、下述哪一条是顺序存储结构的优点:
A、插入运算方便
B、可方便地用于各种逻辑结构的存储表示
C、存储密度大
D、删除运算方便
答案:C;存储密度,在计算机中是指结点数据本身所占的存储量和整个结点结构所占的存储量之比,计算公式:存储密度 = (结点数据本身所占的存储量)/(结点结构所占的存储总量)。顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。优点是存储密度大(=1),存储空间利用率高。
16、用链接方式存储的队列,在进行删除运算时:
A、仅修改头指针
B、仅修改尾指针
C、头、尾指针都要修改
D、头、尾指针可能都要修改
答案:D;当链表中只有一个节点(head)时,则头尾指针都要改变,若不止一个,则只要改变头指针。
19、定义语句"double (*array) [8]"的含义正确的是:
A、array是一个指针,它指向一个数组,数组的元素时是双精度实型
B、array是一个数组,数组的每一个元素是指向双精度实型数据的指针
C、C语言中不允许这样的定义语句
D、以上都不对
答案:A;
29、下列哪种算法使用了队列作为辅助存储结构:
A、二叉树的先根序遍历算法
B、二叉树的层次遍历算法
C、图的深度优先遍历算法
D、图的拓扑排序算法
答案:B;
链式结构与顺序结构的优缺点。
答:
顺序结构:在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。顺序存储结构需要预先分配出存储空间,这块存储空间是大小是规定的,如果存储数据元素<存储空间,会浪费内存,如果存储数据元素>存储空间,会发生上溢。
优点:支持随机访问,访问效率高,适合查找数据、且不易产生内存碎片;
缺点:对数据的增加、删除操作实现不方便且,对内存的要求高效率低
链式结构:链式存储结构是一组任意的存储单元,存放线性表的元素。链式存储空间不需要预先分配存储空间,只要你要存储数据,则随即可以分配,而且数据元素的个数是不受限制的。
优点:对节点的增删操作实现简单且效率高,对内存的要求低
缺点:不支持随机访问,只能逐一遍历,不适合频繁的查找数据,易产生内存碎片。