数据结构经典笔试题Word文档下载推荐.docx
- 文档编号:15729514
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:15
- 大小:22.51KB
数据结构经典笔试题Word文档下载推荐.docx
《数据结构经典笔试题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构经典笔试题Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
3.依照“软件工程”的思想,叙述软件生命周期的不同阶段及各阶段的主要工作内容。
在软件工程中,把从软件的计划开始,经历问题的说明(定义),需求分析,设计代码,测试与维护,直到软件报废为止的整个期间,称为软件的生命周期。
在软件生命周期中,除了最后的运行与维护属于运行期,其它都称为开发期。
1)问题说明:
对研究的问题进行完整而且适当的说明。
2)需求分析:
根据问题说明,确定软件必须具有的功能。
不是具体解决问题,而是明确必须“做什么”。
3)系统设计:
将反映用户要求的逻辑模型转换为一个具体的设计方案,使用伪码来描述算法。
4)编写程序:
将伪码转换为高级语言的形式。
5)测试工作:
检查程序和系统的其他部分是否满足设计要求。
6)运行与维护:
将验收后的软件交付用户使用,通过实际运行环境的检验,对不适应的部分进行修改和扩充。
4.拓扑排序中使用了那些数据结构——共使用了数组,链表,图和堆栈四种数据结构。
三、求二叉树的叶节点的个数:
algorithmcountleaf(Tree*t,intcount)
{
if(t!
=null)
{
if(t->
lchild==null&
&
t->
rchild==null)
count++;
coutleaf(t->
lchild,count);
rchild,count);
}
}
四、求二叉树深度的算法:
algorithmdepth(Tree*t)
{
if(t==null)
return(0);
else
{
hl=depth(t->
lchild);
hr=depth(t->
rchild);
if(hl>
hr)
return(hl+1);
return(hr+1);
}
}
五、将二叉树的左右孩子交换的算法:
algorithmswap(Tree*b)//自顶向下的交换
Tree*t;
if(b==null)
return;
t=b->
lchild;
b->
lchild=b->
rchild;
rchild=t;
swap(b->
六、用两个栈模拟一个队列:
algorithm用两个栈模拟一个队列{
stacks1,s2;
//容量都为n。
void元素入队{
intx;
if(s1->
top==n)
printf("
队列上溢"
);
push(s1,x);
void元素出队{
s2->
top=0;
while(!
Empty(s1))
push(s2,pop(s1));
pop(s2,x);
Empty(s2))
push(s1,pop(s2));
void判断队列是否为空{
if(isEmpty(s1))
return
(1);
七、邻接表的排序:
对给定的数组A[1:
n],假定每个元素是由形式age->
link的记录组成,其中age域表示年龄,link域指向由name->
link组成的链表,该链表记录了同龄人的姓名。
要求设计算法,使A[1]链表中的年龄小于A[2]链表中的年龄,A[2]链表中的年龄小于A[3]链表中的年龄……
algorithm邻接表的排序{
for(i=1;
i<
n;
i++){
pos=i;
for(j=i+1;
j<
j++){
if(A(j)->
age<
A(pos)->
age)
pos=j;
if(pos!
=i){
temp=A(i)->
age;
ptr=A(i)->
link;
A(i)->
age=A(pos)->
link=A(pos)->
A(pos)->
age=temp;
link=ptr;
}
八、写出Floyd求最短路径的算法,并要求能求出具体路径及路径长。
AlgorithmFloyd{
for(i=1;
=n;
i++)
for(j=1;
j++)
A(i,j)=Cost(i,j);
If(i!
=j&
A(i,j))
Path(i,j)={i}
{j};
for(k=1;
k<
k++)
for(j=1;
i<
=n;
j++)
if(A(i,k)+A(k,j)<
A(i,j)){
A(i,j)=A(i,k)+A(k,j);
Path(i,j)=path(i,k)
path(k,j);
}
九、修改Dijkstra求最短路径的算法,使其能求出具体路径及路径长。
//出发点为节点1。
//Cost(i,j)为两个节点间的路径长,当没有路径时为无穷大,当i=j时为0。
//Dist为路径长。
Path为路径,用从节点1出发经过的节点的集合表示。
//S指示是否为最短路径经过点。
algorithmDijstrate(Cost,Dist,Path,S){
S(i)=0;
Dist(i)=Cost(1,i);
Path(i)={1}
{v};
S
(1)=1;
for(i=2;
i++){//大循环
u=无穷大;
for(i=2;
i++)//作用是找出到出发点1距离最短的点i
if(Dist(i)<
u&
S(i)==0)
u=Dist(i);
v=i;
}//加入循环后的结果是v=3
S(v)=1;
//则把S(3)=1,接下去要做的是修改目前的距离和以及路径
if(S(j)=0&
Dist(j)>
Dist(v)+cost(v,j))//该点没有访问过
Dist(j)=Dist(v)+cost(v,j);
Path(j)=Path(v)
//把该点加入路径集合中
十、设有一小段小写英文字母存储在以t为根节点的二叉树种,设计算法依照字母出现的频率从大到小的顺序输出这段文字中的a,b,c…,z这26个字母。
其中,t的形式为:
structnode{chardata;
node*l,*u;
algorithm字母频率{
newletter[1:
26];
newcount[1:
将letter数组中的元素依次赋值为a,b,c,...,z;
将count数组中的元素全部初始化为0;
Travel(T)
if(T!
=null)out=T->
data;
=26;
if(out=letter[i])
{
count[i]++;
break;
callTravel(T->
LChild);
RChild);
=n-1;
if(count[j]<
count[pos])pos=j;
if(pos!
temp1=count[i],temp2=letter[i];
count[i]=count[pos],letter[i]=letter[pos];
count[pos]=temp1;
letter[pos]=temp2;
十一、进行一次人口普查,资料为name和age,对资料进行分类,并按某一年龄输出资料(按人数多少的顺序输出)。
——与第七题相似。
十二、给定一个由几个正整数组成的向量V[1:
n]。
试设计算法,将V[1:
n]的元素移到R[1:
n]内,使R[1]<
=R[2]<
=……<
=R[n/2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 经典 笔试