数据结构上机考试试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构上机考试试题(C++语言版)

考试要求:本次考试共列考核试题4大题,考生可以在所列4个考核试题中任选3个小题(即可能只属于2个大题),作为上机考核试题。

考核原则:所选题目在上机编程调试通过后即为考核通过。监考教师依据学生编程及调试通过与否情况给予考核成绩。

考核成绩评分标准:

所选3个题目全部编写出程序并调试通过:优

所选3个题目全部编写出程序,但只有2个上机调试通过:良

所选3个题目全部编写出程序,但只有1个上机调试通过:及格

所选3个题目全部编写出程序但都没有上机调试通过,或没有编写出全部程序:不及格。考核时间:2小时。

考核试题:

1、建立一个顺序方式存储的线性表,向表中输入若干元素后进行以下操作:

(1)向线性表的表头、表尾或合适位置插入元素

(2)对线性表按升序或降序输出

2、建立一个动态链接方式存储的线性表,向表中输入若干元素后进行以下操作:

(1)从单链表中查找指定元素

(2)返回单链表中指定序号的结点值

3、建立一个动态链接结构存储的二叉树,向这棵二叉树进行以下操作:

(1)按任中序遍历次序输出二叉树中的所有结点

(2)求二叉树的叶子数

4、编写一个对整型数组A[n+1]中的A[1]至A[n]元素进行选择排序的算法,使得首先从待排序区间中选择出一个最大值并同最后一个元素交换,再从待排序区间中选择出一个最小值并同最第一个元素交换,反复进行直到待排序区间中元素的个数不超过1为止。

#include<>

#include<>

#include""

//初始化线性表

void InitList(LinearList& L, int ms)

{

=new ElemType[ms];

if(! {

cerr<<"Memory allocation failure!"<

exit(1);

}

=0;

=ms;

}

//清空线性表

void ClearList(LinearList& L)

{

=0;

}

//求线性表长度

int ListSize(LinearList& L)

{

return ;

}

//检查线性表是否为空

bool ListEmpty(LinearList& L)

{

return ==0;

}

//检查线性表是否为满

bool ListFull(LinearList& L)

{

return ==;

}

//遍历线性表

void TraverList(LinearList& L)

{

for(int i=0; i<; i++) cout<<[i]<<' ';

cout<

}

//从线性表中查找元素

bool FindList(LinearList& L, ElemType& item) {

for(int i=0; i<; i++)

if[i]==item) {

item=[i];

return true;

}

return false;

}

//更新线性表中的给定元素

bool UpdateList(LinearList& L, const ElemType& item)

{

for(int i=0; i<; i++)

if[i]==item) {

[i]=item;

return true;

}

return false;

}

//向线性表的表头、表尾或合适位置插入元素

bool InsertList(LinearList& L, const ElemType& item, int mark) {

if(ListFull(L)) return false;

if(mark>0) {

for(int i=; i>=0; i--)

[i+1]=[i];

[0]=item;

}

else if(mark<0) []=item;

else {for(int i=0; i<; i++)

if(item<[i]) break;

for(int j=; j>=i; j--)

[j+1]=[j];

[i]=item;

}

++;

return true;

}

//从线性表中删除表头、表尾或等于给定值的元素

bool DeleteList(LinearList& L, ElemType& item, int mark)

{

if(ListEmpty(L)) return false;

if(mark>0) {

item=[0];

for(int i=1; i<; i++)

[i-1]=[i];

}

else if(mark<0) item=[];

else { for(int i=0; i<; i++)

if[i]==item) break;

if(i>=

return false;

else item=[i];

for(int j=i+1; j<; j++)

[j-1]=[j];

}

;

return true;

}

//对线性表按升序或降序输出

void OrderOutputList(LinearList& L, int mark)

{

int* b=new int[];

int i,k;

for(i=0; i<; i++) b[i]=i;

for(i=1; i<; i++) {

k=i-1;

for(int j=i; j<; j++) {

if(mark==1 && [b[j]]<[b[k]]) k=j;

if(mark!=1 && [b[k]]<[b[j]]) k=j;

}

if(k!=i-1) {int x=b[i-1]; b[i-1]=b[k]; b[k]=x;} }

for(i=0; i<; i++)

cout<<[b[i]]<<' ';

cout<

}

#include<>

const int ML=10;

#include""

//主文件

void main()

{

LinearList a;

InitList(a,ML);

int i;

ElemType x;

相关文档
最新文档