数据结构key - 书面作业1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构key - 书面作业1
一、选择题
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; delet p->next;
C. p->next=p-next->next; delet p->next;
D. q=p->next; delete q;
5. 链表不具备的特点是 ____ 。
A 可随机访问任何一个元素
B 插入、删除操作不需要移动元素
D 所需存储空间与线性表长度成正比
p->next=q->next;
B. q=p->next; p->next=q->next;
C 无需事先估计存储空间大小
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. 线性表、图
二、填空题
1. 数据结构的存储结构包括:顺序存储表示、链式存储表示、索引存储表示和散列
存储表示等四大类。
2. 在线性结构中,第一个结点没有前驱结点,其余每个结点有1个前驱结点;最后
一个结点没有后继结点,其余每个结点有1个后继结点。
3. 实现字符串逆序(既输入如“ABC”,输出为“CBA”)选用栈数据结构来解决较
好
4. 银行柜面服务遵循“先来先服务”的原则,抽号服务终端机采用队列数据结构来
模拟这种行为
5. 线性表第一个元素的存储地址是100,每个元素的长度是2,则第5个元素的地
址是:108 6. 引起循环队列(队首位置)发生变化的操作是出队 7. 链式队列与顺序
队列相比,一个明显的优点是通常不会出现队满 8. 在一个长度为n的顺序表中删除第i
个元素,要移动n-i个元素。
如果要在第i个元素前插入一个元素,要后移n-i+1个元素。
9. 栈操作数据的原则是后进先出,队列操作数据的原则是先进先出。
10. 在栈中,
可进行插入和删除操作的一端称栈顶。
11. 栈和队列都是_线性___结构;对于栈只能在_栈顶__插入和删除元素;对于
队列只能在__队尾__插入元素和__队头__删除元素。
12. 计算机在运行递归程序时,要用到栈结构。
D. 树形结构、堆
13. 设将整数1,2,3,4进栈,若入、出栈次序为Push, Pop,Push,Push, Pop, Pop,Push,
Pop,则出栈的数字序列为1324 ;若想得到出栈序列1432则具体操作为:Push,Pop,Push,Push,Push,Pop,Pop,Pop 14. 在采用少用一个存储空间的具有n个单元的循环
队列中,队满时共有n-1个元素。
对于下图所示的循环队列,队满的条件是
front=(rear+1)%MAXSIZE;队空的条件是rear=front
三、设计题
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 { };
Node * Find(Node *Head, int item) {
int data; Node *next;
}
Node *p=Head->next; while(p!=NULL) { if(p->data == item) return p; //查找成功 p=p->next; }
return NULL; //查找失败
感谢您的阅读,祝您生活愉快。