数据结构试卷及答案资料

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
free(q); return OK; }
12、在一个长度为 n 的线性链表中第 i 个元素(1in)之前插入一个来自百度文库素时,需向后移动 n-i+1 个元素。
13、在一个长度为 n 的线性链表中删除第 i 个元素(1in)时,需向前移动 n-i 个元 素。
14、在一个单链表中 p 所指结点之后插入一个 s 所指结点时,应执行 s->next = p->next 和 p->next = s 的操作。
链式存储结构优点:插入、删除元素时不需要移动元素;缺点:逻辑上相邻,物理位置 不一定相邻,不能随机存取表中元素,需要依次查找,求线性表的长度时不如顺序存储结构 方便,需要逐个结点搜索计算,或设置带头结点的线性链表。
11、完成下列在单链表中删除元素算法 Status ListDelete_L(LinkList &L, int i, ElemType &e){ //删除第 i 个元素 e
.
. i = i*2
O(log2n)
8、抽象数据类型的定义由三元组来定义:(D,S,P) 其中,D 是 数据对象, S 是 D 上的 关系集,P 是 对 D 的基本操作集。
9、写出抽象数据类型线性表的定义
ADT List{
数据对象:D={ai | ai Elemset, i=1,2,…,n,n0}
20、循环队列中,假设少用一个元素,则/删除队头元素并赋给 e 的算法如下 Status DeQueue(SqQueue &Q, QElemType &e){
if(Q.front = Q.rear) return ERROR;//队空 e = Q.base[Q.front]; Q.front = (Q.front +1) % MAXQSIZE; // Q.rear 前移 return OK; } 21、判定一个队列 QU(最多元素为 MaxSize)为空的条件是: QU->front == QU->rear;为 满队列的条件是: QU->rear - QU->front == MaxSize 。
p = L; j =0; //p 指向头结点 while(p->next && j<i-1){
p = p->next; ++j
.
.
} //寻找第 i 个结点,并令 p 指向其前驱 if(!(p->next) || j>i-1) return ERROR; //删除位置不正确 q= p ->next; p->next = q->next ; //删除与释放结点 e = q->data;
}
19、循环队列中,假设少用一个元素,则插入元素到队尾的算法 Status EnQueue(SqQueue &Q, QElemType e){
if((Q.rear+1)%MAXQSIZE == Q.front) return ERROR;//队满 Q.base[Q.rear]=e;
Q.rear = (Q.rear +1) % MAXQSIZE;// Q.rear 前移 return OK; }
6、线性结构中元素之间的关系存在 一对一 关系,树形结构中元素之间的关系存在 一 对多 关系,图形结构中元素之间的关系存在 多对多 关系。
7、试写出以下算法的时间复杂度 i=s=0 while (s<n) {
i++; s += i; }
O( n)
7、试写出以下算法的时间复杂度 i=1 while( i <= n)
3、数据的 逻辑结构 只抽象反映数据元素的 逻辑关系 ;数据的 存储(物理) 结构 是数据的逻辑结构 在计算机存储器中的实现 。
4、算法分析的目的是分析算法的 效率以求改进 ,算法分析的两个主要方面是 空间 复杂度和时间复杂度 。 A 5、计算机算法是解决问题的 有限运算序列 ,它必须具备 输入、输出、确定性、有穷 性和稳定性 等 5 个方面的特性。
据元素 e,L 长度加 1
ListDelete(&L,i,&e) // 1 ≤ i ≤ ListLength(L),删除 L 中的第 i 个元素,并用 e
返回
ListTraverse(L,visit()) //依次对 L 的每个元素调用函数 visit()
…………
} ADT List
10、指出线性表顺序存储、链式存储结构的优缺点。 答:顺序存储优点:逻辑上相邻,物理位置也相邻,可以随机存取表中任一元素;缺点:插 入和删除元素时需要移动大量元素。
.
东华理工大学 2015 —2016 学年第 一 学期考试 模拟试卷 A
一、 填空题(50 分)
1、数据结构是一门研究非数值计算的程序设计问题中的 数据元素 以及它们之间 关系 和运算等的科学。(2 分)
2、数据结构的类型通常分为: 集合、线性结构、树形结构、图状结构或网状结构 ; 从逻辑上可以把它们分成: 线性结构和非线性结构 。
数据关系:R={< ai-1 , ai> | ai-1 , ai D, i=2,…,n}
基本操作:
InitList(&L)
//构造一个空的线性表 L
DestroyList(&L) //消毁线性表 L
ListLength(L) //返回 L 中数据元素的个数
ListInsert(&L,i,e) // 1 ≤ i ≤ ListLength(L)+1,在 L 中第 i 个位置之前插入数
17、设有一队列,(a1,a2,…,an)则对头元素是 a1 队尾元素是 an 。
18、假设队列以带头结点的链式表示,则删除一个元素并返回给 e 的算法如下:
.
.
Status DeQueue(LinkQueue &Q, QElemType &e){ if(Q.front == Q.rear) return EEROR; p = Q.front->next;//p 为需要删除的结点 e = p->data; Q.front->next = p->next; if (Q.rear ==p) Q.rear = Q.front;//队列中只有一个元素被删除时,队尾等于队头 free(p); return OK;
15、在单链表中,插入或删除一个结点元素时,仅需要修改 指针 而不需要移动 元素 。
16、栈(Stack)是限定仅在表尾进行插入和删除操作的线性表,
17、栈链式存储结构中删除栈顶元素,并用 e 返回,完成下列算法 Status Pop(ListStack &S, SElemType &e){
if(S.top=NULL) return ERROR; //栈无元素 p = S.top; S.top = S.top->next; e = p->data; free(p);//释放节点批 p S.len--; return OK; }
相关文档
最新文档