大学《算法数据结构》复习试题及答案
数据结构是主体,通用算法是附属(仅是查找,排序等)。以下是由阳光网小编整理关于大学《算法数据结构》复习试题的内容,希望大家喜欢!
大学《算法数据结构》复习试题及答案(一)
算法设计题(每小题6分.共12分)
1.请写出在循环队列上进行插入操作的算法。要求若插入成功则返目true,否则返回else.
循环队列定义如下:
struet CyclicQueue {
ElemTy[ae elem[M]; //M为已定义过的整型常量,表示队列数组空间长度
int rear,front; //rear指向队尾元素后一个位置,front指向队头元索
int tag;
};
注意:当front=rear且tag=0时, 队列空,当front=rear且tag=1时,队列满,即队列中已有M个元素.
bool EnCQueue(CyclicQueue& Q, ElemType x){ {/*编写该函数体。/}
//在下面编写函数体
2.已知二又树中的结点类型Bin·rreeNode定义为:
slruct BinTreeNode {char data;BinTreeNode * left, * right;};
其中data为结点值域,left和righ~分别为指向左、右子女结点的指针域,根据下面函数声明编写出求一棵二叉树中结点总数的递归算法,该总数值由函数返回.假定BT初始指
向这棵二又树的.根结点.
int BTreeCount(BinTreeNode* BT);
答案
算法设计题(2小题,每小题6‘分,共12分)
1.分步给分
if (Q. rear=Q, front && Q tag== 1) return false;
Q. elem[Q, rear] = x;
Q. rtar= (Q. rear+ 1) %M;
if(Q. rear== Q. front) Q. tag= 1;
return true;
2.分步给分
int BTreeCount(BinTreeNode * BT)
(
if(BT== NULL)
return O;
else
return BTreeCount ( BT->left) +BTreeCount(BT-> fight) + l;
大学《算法数据结构》复习试题及答案(二)
1.设字符串类String具有下列操作:
int Length()const; //计算字符串的长度
chargetData(k); //提取字符串第k个字符的值
若字符串Tar的值为“ababcabcacbab“,的值为‘abcac”时,
(1)给出下面算法执行后返回的结果,
(2)给出下面。算法的功能。
include "String, h"
int unknown(String& Tar, strlng& Pat) coast
{
for (int i<O; i<=Tar. LengthO-Pat. Length(); i++) {
iht j=O;
while (j<Pat. Length())
if (Tar. getOata(i+j) ==Pat. getData(j)) j+ +
else break;
if (j==Pat. Length()) return i;
return –1;
}
返回结果:
算法功能:
2。已知二叉树中的结点类型BinTrceNode定义为:
struct BinTreeNode {ElemType data; BinTreeNode * left, * right; }
其中data为结点值域,left和right分别为指向左、右子女结点的指针域.下面函数的功能是返回二又树BT中值为X的结点所在的层号.根据题意按标号把合适的内容填写到算法后面相应标号的位置.
int NodeLevel(BinTreeNode * BT, ElemType X)
if (BT==NULL) return -- 1; //空树的层号为一1
else if (BT->data==X) return 0; //根结点的层号为o
//向于树中查找X结点
else {
im cl =NodeLevel(BT->left, X);
if (cl>=0) (1)
iht e2= (2) ;
if ( (3) ) return c2+1;
//若树中不存在K结点则 返回一l
else return -1
}
}
(1)
(2)
(3)
3.假定一个有向无权图采用邻接矩阵存储,请指出F面算法的功能。
Template<class Type>
void Graph<Type>::unknown(int i)
{
int d,j;
d=0;
for (j=0; j<CurremNodes; j++){ //CurremNodes为田中的顶点效
if (Edge[i][j]) {d++ ; Edge[i][j]=0; }
if (Edge[j][i]) {d+ +; Edge[j][i]=0; }
}
CurrentEdges-=d; //CurremEdges //为图中的边数
}
算法功能:
答案
1
返回结果,5
算法功能:字符串的模式匹配算法.
2.
(1)returncl+l
(2)NodeLevel(BT一>,right,X)
(3)<c2>=0)
3,从有向无权图中删除所有与顶点i相连的边,包括出边和人边。
【大学《算法数据结构》复习试题及答案】相关文章: