一、选择题
1.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有()个
前驱结点;最后一个结点没有后继结点,其余每个结点有且只有()个后继结点。
A. 1 , 1
B. 1 , 2
C. 2 , 1
D. 2 , 2
2.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。
A. 必须是连续的
B. 部分地址必须是连续的
C. 一定是不连续的
D. 连续或不连续都可以
3.指针变量p指向单链表中的结点,若该结点是链表的尾结点,下面正确的说
法是( )。
A. p->next = = NULL
B. p->next != NULL
C. p = =NULL
D. p->next->next = =NULL
4.设指针p所指结点不是单链表的尾结点,删除p所指结点的后继结点的操作
是()。
A. p->next=p->next->next; delete p;
B. q=p->next; p->next=q->next; delet p->next;
C. p->next=p-next->next; delet p->next;
D. q=p->next; p->next=q->next; delete q;
5.链表不具备的特点是____ 。
A 可随机访问任何一个元素
B 插入、删除操作不需要移动元素
C 无需事先估计存储空间大小
D 所需存储空间与线性表长度成正比
6.假定栈用单链表的存储结构表示,栈的栈顶指针为top,进行退栈时执行的
操作是( )。
A. top->next=top;
B. top=top->data;
C. top=top->next;
D. top->next=top->next->next;
7.一个队列的数据入列序列是1,2,3,4,则队列的出队时输出序列是____ 。
A 4,3,2,1
B 1,2,3,4
C 1,4,3,2
D 3,
2,4,1
8.栈与一般线性表区别主要在方面。
A 元素个数
B 元素类型
C 逻辑结构
D 插入、删除元素的位置
9.在一个链队中,假设F和R分别是队首和队尾指针,则删除一个结点的运算
是。
A R=F->next;
B R=R->next;
C F=F->next;
D F=R->next;
10. 数据三种最主要的逻辑结构是线性结构和()。
A. 线性表、树
B. 树形结构、图状结构
C. 线性表、图
D. 树形结构、堆
二、填空题
1.
散列存储表示等四大类。
2.
3.实现字符串逆序(既输入如“ABC”,输出为“CBA”
较好
4.银行柜面服务遵循“先来先服务”
来模拟这种行为
5.线性表第一个元素的存储地址是100,每个元素的长度是2,则第5个元素的地
址是
6.
7.
8.在一个长度为n的顺序表中删除第i个元素,要移动
第i个元素前插入一个元素,要后移
9.
10.
11.栈和队列都是结构;对于栈只能在插入和删除元素;对于
队列只能在插入元素和删除元素。
12.
13.设将整数1,2,3,4进栈,若入、出栈次序为Push, Pop,Push,Push, Pop, Pop,Push,
Pop,则出栈的数字序列为1432则具体操作为:
14.在采用少用一个存储空间的具有n个单元的循环队列中,队满时共有
元素。
对于下图所示的循环队列,队满的条件是
队空的条件是
三、设计题
1.已知str是一个非空字符串,编写算法通过在临时栈S和队列Q中缓存数据,
判处字符串str是否为回文,算法采用文字描述。
①将串str分别入队Q中和入栈S中
②将Q的队头元素出队至变量tq中,将S的栈顶元素出栈至变量ts中
③若tq==ts,重复步骤②;若tq!=ts,则退出循环,return 0表示str不是
回文
④return 1表示str是回文
2.设计函数Node * Find(Node *Head, int item),Head为带头结点单链表的头指
针,在传入的链表中查找值为item的结点并返回其地址,如不存在这样的结点则返回空值NULL。
其中结点的类型声明如下:
struct Node
{
int data;
Node *next;
};
Node * Find(Node *Head, int item)
{
Node *p=Head->next;
while(p!=NULL)
{
if(p->data == item)
return p; //查找成功p=p->next;
}
return NULL; //查找失败
}。