问答题一棵二叉树中的结点的度或为0或为2,则二叉树的枝数为2(n0一1),其中n0是度为0的结点的个数。【南京理工大学1998六(3分)】
问答题已知一棵二叉树的中序序列和后序序列如下:中序:GLDHBEIACJFK后序:LGHDIEBJKFCA(1)给出这棵二叉树;(2)转换为对应的森林;(3)画出该森林的带右链的先根次序表示法:(4)画出该森林带度数的后根次序表示法;(5)在带度数的后根次序表示法中,不包含指针,但仍能完全反映树的结构。写出以结点x为根的子树在后根次序序列中的前驱的求法。(用语言叙述,不用写算法)
问答题设有一个数组中存放了一个无序的关键序列K
1
、K
2
、…、K
n
。现要求将K
n
放在将元素排序后的正确位置上,试编写实现该功能的算法,要求比较关键字的次数不超过n。(注:用程序实现。)【南京航空航天大学1997六(12分)】
问答题给定关键字序列(26,25,20,33,21,24,45,204,42,38,29,31),要用散列法进行存储,规定负载因子a=0.6。
问答题递归程序的入口语句、出口语句一般用什么语句实现?【大连海事大学1996二、4(4分)】
问答题下面程序段的时间复杂度是什么?for(i=0;i
问答题广义表简称表,是由零个或多个原子或子表组成的有限序列,原子与表的差别仅在于 (1)。为了区分原子和表,一般用(2)表示表,用(3)表示原子。一个表的长度是指(4),而表的深度是指 (5) 。【山东工业大学2000一、3(3分)】【山东大学1998一、2(3分)】
问答题下列算法是利用折半查找算法在一个有序表中插入一个元素X,并保持表的有序性。请将程序中空白处填上适当的语句完成功能。
int bininsert(sqlist r,int x,int n)//将x插入到r[1.-n]中并保持其有序性
{int low:1,high=13.,mid,flag=l,pos,i; //插入的位置为pos
while( (1) &&flag)
(mid=(log+high)/2;
if(xr[mid].key) (3) ;
else flag=0;
if(!flag)pos=mid;
else pos=low;
for(i=n;i>=pos;i一一)
(4);
r[pos].key=x;
}
【北京交通大学2005七、1(8分)】
问答题为什么在倒排文件(inverted file)组织中,实际记录中的关键字域(key field)可删除以节约空间?而在多表(multilist)结构中这样做为什么要牺牲性能?【东南大学1997一、4(8分)】
问答题要求二叉树按二叉链表形式存储,并且: (1)写一个建立二叉树的算法。 (2)写一个判别给定的二叉树是否是完全二叉树的算法。完全二叉树定义为:深度为K,具有N个结点的二叉树的每个结点都与深度为K的满二叉树中编号从1至N的结点一一对应。
问答题假设root是一棵给定的非空查找树,对于下面给出的子程序,当执行注释中给出的调用语句时,就可以实现如下的操作:在非空查找树root中查找值为k的结点;若值为k的结点在树中,且是一个叶子结点,则删除此叶子结点,同时置Success为“真”;若值为k的结点不在树中,或者虽然在树中,但不是叶子结点,则不进行删除,仅置success为“假”。应注意到非空查找树只包含一个结点情况,此时树中的唯一结点,既是根结点,也是叶子结点。
#include
typedef struct、node{
int key;
struct node*left, *right ;
}node;
node*root; int kt success;
void del—leaf(node**t,int k,int。sn)
(node*P,*pf;p=。t; *sn=0;
while( (1) &&!*sn)
if(k==p一>key)。sn=1;
else { (2) ;
if (kkey)p=p->left ; else p=p->right;
}
if (*sn&&P一>Ieft==NULL&&P一>right==null)
{ if( (3) )
if(pf一>left==p)pf一>left=null; else pf一>right=null;
else (4) ;
free(p);
}
else*sn=0;
}/*call form:del—leaf(&root,k,&success);*/
【上海大学1999一、2(8分)】
问答题有n个记录存储在带头结点的双向链表中,现用双向冒泡排序法对其按升序进行排序,请写出这种排序的算法(注:双向冒泡排序即相邻两趟排序向相反方向起泡)。
问答题在数据结构课程中,数据的逻辑结构、数据的存储结构及数据的运算之间存在着怎样的关系?
问答题设浮点数字长32位,其中阶码部分8位(含1位阶符),尾数部分24位(含1位数符),当阶码的基值分别是2和16时: (1)说明基值2和16在浮点数中如何表示; (2)当阶码和尾数均用补码表示,且尾数采用规格化形式时.给出两种情况下所能表示的最大正数真值和非零最小正数真值; (3)在哪种基值情况下,数的表示范围大? (4)在两种基值情况下,对阶和规格化操作有何不同?
问答题数据结构是研讨数据的(1)和(2),以及它们之间的相互关系,并对与这种结构定义相应的(3),设计出相应的(4)。【西安电子科技大学1998二、2(3分)】
问答题给出KMP算法中失败函数f的定义,并说明利用厂进行串模式匹配的规则,该算法的技术特点是什么?【东南大学1993一、3(9分)1997一、2(8分)2001一、6(6分)】
问答题下面的排序算法的思想是:第一趟比较将最小的元素放在r[1]中,最大的元素放在r[n]中,第二趟比较将次小的放在r[2]中,将次大的放在r[n一1]中,依次下去,直到待排序列为递增序。(注:代表两个变量的数据交换)。【南京理工大学2001三、2(10分)】【中国海洋大学2007三(12分)】
void sort(SqList
if(max!=n-i+1]
{if((5) )r[min](一一>r In—i+1];else((6)};}
i++;
}
}//sort
问答题图的深度优先遍历和广度优先遍历各采用什么样的数据结构来暂存顶点?当要求连通图的生成树的高度最小,应采用何种遍历?【吉林大学2007二、7(3分)】
问答题若x和y是两个采用顺序结构存储的串,编写一个比较两个串是否相等的函数。【中国航天科研机构2005六(7分)】
问答题线性表的双向链表的存储结构为: Typedef struct DNode{ TElem info; structDNode*left; struct DNode*right; };并假设己建立头指针为head的双向链表,p指向其中某个结点,写一个程序段,从该循环链表中删除p所指向结点的前一个结点(假设该结点存在)。【华南理工大学2005二、1(4分)】