数据结构期中试卷及答案

上传人:人*** 文档编号:481123274 上传时间:2024-02-10 格式:DOCX 页数:3 大小:15.23KB
返回 下载 相关 举报
数据结构期中试卷及答案_第1页
第1页 / 共3页
数据结构期中试卷及答案_第2页
第2页 / 共3页
数据结构期中试卷及答案_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《数据结构期中试卷及答案》由会员分享,可在线阅读,更多相关《数据结构期中试卷及答案(3页珍藏版)》请在金锄头文库上搜索。

1、细心整理一、选择题每题2分,共30分1. 数据构造是 D 。A一种数据类型 B数据的存储构造C一组性质一样的数据元素的集合D相互之间存在一种或多种特定关系的数据元素的集合 2以下与数据的存储构造无关的术语是 D 。A链队列 B. 链表 C. 依次表 D. 栈3以下数据构造中, A 是非线性数据构造A树 B字符串 C队 D栈4一个依次存储线性表的第一个元素的存储地址是90,每个元素的长度是2,那么第6个元素的存储地址是B。 A98 B100 C102 D1065在线性表的以下运算中,不变更数据元素之间构造关系的运算是D。A插入 B删除 C排序 D查找6线性表接受链式存储时,其地址(D )。 A必

2、需是连续的 B必需是不连续的 C局部地址必需连续 D连续与否均可以7线性表是(A )。A一个有限序列,可以为空 B一个有限序列,不行以为空C一个无限序列,可以为空 D一个无限序列,不行以为空8假设进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进展,那么可能出现的出栈序列为B。 A3,2,6,1,4,5 B3,4,2,1,6,5 C1,2,5,3,4,6 D5,6,4,2,3,1 9. 假设一个栈的输人序列是1,2,3,n,输出序列的第一个元素是n,那么第k个输出元素是C 。Ak Bn-k-1 Cn-k+1 D不确定10.对于队列操作数据的原那么是 A 。A. 先进先出 B. 后进先出

3、C. 先进后出 D. 不分依次11. 栈和队列的共同点是 C 。A. 都是先进先出 B. 都是先进后出 C. 只允许在端点处插入和删除元素 D. 没有共同点12在一个链队列中,假定front和rear分别为头指针和尾指针,删除一个结点的操作是 A 。 Afront=front-next Brear=rear-next Crear-next=front Dfront-nextrear13. 空串与空格串 B 。 A一样 B不一样 C可能一样 D无法确定14. 串与平凡的线性表相比拟,它的特殊性体此时此刻C 。 A依次的存储构造 B链接的存储构造 C数据元素是一个字符 D数据元素可以随意15. 串

4、的长度是指 B 。A.串中所含不同字母的个数 B.串中所含字符的个数C.串中所含不同字符的个数 D.串中所含非空格字符的个数二、填空题每空2分,共20分1 线性表、栈和队列,串都是_线性_构造。2 数据的根本单位是_数据元素_。3 当线性表的元素总数根本稳定,且很少进展插入和删除操作,但要求以最快的速度存取线性表中的元素时,应接受_依次_存储构造。4 确定具有n个元素的一维数组接受依次存储构造,每个元素占k个存储单元,第一个元素的地址为Loc(a1),那么,第i个元素的存储地址Loc(ai)= Loc(a1)+(i-1)*k 。5 栈stack是限定在表尾进展插人或删除操作的线性表。在栈中,允

5、许插人和删除操作的一端称为_栈顶_,而另一端称为_栈底_。6 一个循环队列Q中,头指针和尾指针分别为Q.front和Q.rear,且最大队列长度为MaxQSize,那么判定队空的条件为 Q.rear=Q.front,判定队满的条件为(Q.rear+1)%MaxQSize=Q.front。队列的长度为 (.rear-Q.front+MaxQSize )%MaxQSize7 两个串相等的充分必要条件是 两个串的长度相等,且各个对应位置的字符都相等 。三、程序填空题每空3分,共30分1. 在带头结点的单链表L中第i个数据元素之前插入数据元素e的C语言描述算法如下,其中L为链表头结点指针。请填充算法中

6、标出的空白处,完成其功能。typedef struct node int data; struct node *next; linknode,*link;int ListInsert_L(link &L, int i, int e) Linknode *p;int j;p = L; j = 0;while (p & j next ; +j; / 找寻第i-1个结点if (!p | j i-1) return 0; s=(link)malloc(sizeof(linknode) ;/ 生成新结点ss-data = e; s-next=p-next ; p-next = s; / 插入L中retu

7、rn 1; 2. 对依次栈的C语言描述算法如下,其中top为栈顶指针,请填充算法中标出的空白处,插入元素e为新的栈顶元素。#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct char *base; char *top; int stacksize; SqStack;int Push( SqStack &S, char e) / if ( (s.top-s.base)=s.stacksize ) /栈满,追加存储空间 S.base=(SElemType *)realloc(S.base,S.stacksize+ST

8、ACKINCREMENT) *sizeof(SElemType);if (! S.base) return 0;S.top = s.base+s.stacksize ; /修改栈顶指针S.stacksize += STACKINCREMENT; *s.top+=e ;/插入元素return 1; 3. 对链队列的C语言描述算法如下,请填充算法中标出的空白处,删除队列Q 的队头元素并用e返回其值。typedef struct QNode QElemType data; struct QNode *next; QNode, *QueuePtr; typedef struct QueuePtr fr

9、ont; QueuePtr rear; LinkQueue;int DeQueue(LinkQueue &Q, QElemType &e) Linknode *p; if( Q.front=Q.rear ) retrun 0;/队列空,返回 p = Q.front - next; e = p-data; Q.front - next=p-next;/修改指针 if(Q.rear=p) Q.rear= Q.front ; /队列只有一个元素的状况 free(p) ;/释放结点空间 return 1; 三、算法设计与分析题每题10分,共20分1、简述以下算法实现的功能:每题5分,共10分1type

10、def struct LNode Char data;struct LNode *next; LNode,*LinkList;LinkList Demo(LinkList &L) / L 是无头结点单链表LNode *Q,*P;if(L&L-next)Q=L; L=L-next; P=L; while (P-next) P=P-next;P-next=Q; Q-next=NULL;return L;/ Demo答:将单链表的第一个结点删除,放到链尾。2#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct int *

11、base; int *top; int stacksize; Stack; void Demo1( Stack &S, int m) Stack T; int i; InitStack (T);/初始化栈 while (! StackEmpty(S)/判定栈是否为空 if( i=Pop(S) !=m) Push( T,i);/入栈操作 while (! StackEmpty(T) i=Pop(T); /出栈操作Push(S,i); 答:删除栈S中全部值为m的数据元素2.有一个带头结点的单链表,头指针为head,编写一个算法计算全部数据域为X的结点的个数不包括头结点。typedef struct node int data; struct node *next; linknode,*link;int sample(link head, int X) int count=0; link p=head-next; while(p) if(p-data=X)count+; p=p-next; return count;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号