/*---------------------------------------------------C语言部分--------------------------------------------------*/
/*三.已知2000年1月1日为星期六,编程求任意给定年元月1日的星期*/
/*四.今有一英汉词典文件EC.txt(文件大小超过1MB),每一词条格式如下:
#book%in%z书!%z支票!%z帐薄!%ivt%z预定!%z登记姓名!
编程完成
(1)对词典建立索引文件,每间隔10KB,抽取一词条当不是词条时抽取不超过10KB的最大间隔的词条。
索引文件格式为: 词条 词条在文件中的位置
其中,词条为50BYTES,位置长整数占8BYTES。该功能函数CreateIndex完成。
(2)根据索引大小,将建立的索引内容装入一连续缓冲区内。该功能用函数LoadIndex完成*/
/*五.用回溯算法编写函数fill(int num,int n),用0到num-1的数填充n×n的矩阵,要求填充
的数不能重复,各行元素之和相同,各列元素之和也相同,输出所有可能的填充结果。 */
/*--------------------------------------------------数据结构部分-------------------------------------------*/
/*二、已知f为单链表的表头指针,链表中存储的都是整型数据,试设计算法将此链表的结点按照递增次序进行就地排序。*/
void InsertSort_L(Linklist &La)
{
//用直接插入排序使链表递增有序
if(La->next)
{
//链表不空
p = La->next->next;
La->next->next = Null;
while(p != NULL)
{
r = p->next; //暂存p的后继
q = La;
while(q->next && q->next->data < p->data)
q = q->next; //查找插入位置
p->next = q->next; //插入
q->next = p;
p = r;
}//while
}//if
}
/*三、给出中 序线索二叉树的结点结构,试编写在不使用栈和递归的情况下先序编历中序线索二叉树的算法。*/
void InTraveseThr(BitTree thrt)
{
//遍历中序线索二叉树
p = thrt->lchild; //p指二叉树根结点
while (p!=thrt)
{
while(p->Ltag == 0)
p = p->lchild;
printf(p->data);
while(p->rtag == 1 && p->rchild != thrt)
{
p = p->rchild;
printf(p->data);
}//while
p = p->rchild;
}//while
}//InTraversethr
/*四、设关键字是一个由26个小写字母组成的字符串,哈希表的长度为26。试编写算法,建立哈希表,并以第一个
字符的字典顺序输出哈希表中的所有关键字。设哈希表函数为hast(x)=x中的第一个字符在字典顺序中的序号,
采用线性深测再散列法来解决冲突。(假设函数f(x)能够计算出x中的第一个字符在字典顺序中的序号)。*/
(1)
void create_Hs(RedType &H , keyType key)
{
i = Hash(key);//创建哈希表
if(H(i) == NULL)//插入
H(i) = key;
else
{
//解决冲突,再插入
j = (i+1)%m; //m 为表长
while(j != i)
{
if(H[j] == NULL)
H[j] = key;
else
j = (j+1)%m;
}
}
}
(2)
void print_Hs(RedType H)
{
//输出哈希表
for(i = 0;i < 26;i++)
{
j = 1;
while(H[j] != NULL)
{
if(f(H[j]) == i)
printf(H[j]);
j = (j+1)%m;
}//while
}//for
}
东北大学计算机专业研究生入学考试2003年真题
最新推荐文章于 2020-05-16 08:56:25 发布