77范文网 - 专业文章范例文档资料分享平台

2015广工数据结构答案(6)

来源:网络收集 时间:2018-11-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

字母的顺序输出哈希表中所有关键字的算法。 哈希表的类型HashTable定义如下: #define SUCCESS 1 #define UNSUCCESS 0 #define DUPLICATE -1

typedef char StrKeyType[4]; typedef struct {

StrKeyType key; // 关键字项

int tag; // 标记 0:空;1:有效; -1:已删除 void *any; // 其他信息 } RcdType;

typedef struct {

RcdType *rcd; // 存储空间基址 int size; // 哈希表容量

int count; // 表中当前记录个数 } HashTable; **********/

int Hash(char key){ int i;

i=(key-'A'); return i; }

void collision(int &p,int size){ p=(p+1)%size; }

int SearchHash(HashTable H,char key,int &p,int &c){ p=Hash(key);

while(H.rcd[p].tag!=0&&(H.rcd[p].key[0]!=key)||-1==H.rcd[p].tag){ collision(p,H.size);c++; }

if(H.rcd[p].key[0]==key) return 1; else return 0; }

void PrintKeys(HashTable ht, void(*print)(StrKeyType)) /* 依题意用print输出关键字 */ {int p,c=0,t; char key='A'; do{

if(SearchHash(ht,key,p,c)==1) t=p;//print(ht.rcd[p].key);

while(ht.rcd[p].tag!=0&&Hash((ht.rcd[p].key[0])==t)){ if(ht.rcd[p].key[0]==key&&ht.rcd[p].tag!=-1) print(ht.rcd[p].key); collision(p,ht.size); }

key++;

}while(key<='Z'); }

/**********

【题目】假设哈希表长为m,哈希函数为H(x),用链地址法 处理冲突。试编写输入一组关键字并建造哈希表的算法。 哈希表的类型ChainHashTab定义如下: #define NUM 7 #define NULLKEY -1 #define SUCCESS 1 #define UNSUCCESS 0 #define DUPLICATE -1 typedef char HKeyType; typedef struct HNode { HKeyType data; struct HNode* next; }*HLink;

typedef struct {

HLink *rcd; // 指针存储基址,动态分配数组 int count; // 当前表中含有的记录个数 int size; // 哈希表的当前容量 }ChainHashTab; // 链地址哈希表

int Hash(ChainHashTab H, HKeyType k) { // 哈希函数 return k % H.size; }

Status Collision(ChainHashTab H, HLink &p) { // 求得下一个探查地址p if (p && p->next) { p = p->next; return SUCCESS;

} else return UNSUCCESS; }

**********/

int SearchHash(ChainHashTab H,HKeyType key,HLink &p,int &j){ j=Hash(H,key); p=H.rcd[j];

if(p==NULL) return 0;

while(p->next!=NULL&&p->data!=key){ Collision(H,p); }

if(p->data==key) return 1; else return 0; }

int BuildHashTab(ChainHashTab &H, int n, HKeyType es[]) /* 直接调用下列函数 */ /* 哈希函数: */ /* int Hash(ChainHashTab H, HKeyType k); */

/* 冲突处理函数: */ /* int Collision(ChainHashTab H, HLink &p); */ { int i,j; HLink p,t;

for(i=0;i

if(SearchHash(H,es[i],p,j)==0){

t=(HNode*)malloc(sizeof(HNode)); t->data=es[i]; t->next=H.rcd[j]; H.rcd[j]=t; } }

return 1; }

/**********

【题目】试编写如下定义的递归函数的递归算法: g(m,n) = 0 当m=0,n>=0 g(m,n) = g(m-1,2n)+n 当m>0,n>=0 **********/

int G(int m, int n)

/* 如果 m<0 或 n<0 则返回 -1 */ {

if(m<0||n<0) return -1; if(m==0&&n>=0) return 0;

if(m>0&&n>=0) return G(m-1,2*n)+n; }

/**********

【题目】试写出求递归函数F(n)的递归算法: F(n) = n+1 当n=0 F(n) = nF(n/2) 当n>0 **********/ int F(int n)

/* 如果 n<0 则返回 -1 */ { if(n<0) return -1; if(n==0) return n+1;

if(n>0) return n*F(n/2); }

/**********

【题目】求解平方根 的迭代函数定义如下:

sqrt(A,p,e) = p 当|p*p-A|=e

其中,p是A的近似平方根,e是结果允许误差。试写出相 应的递归算法。 **********/

float Sqrt(float A, float p, float e) { float t=p*p-A; if(t

if(t>=e) return Sqrt(A,(p+A/p)/2,e); }

/**********

【题目】已知Ackerman函数的定义如下: akm(m,n) = n+1 当m=0 akm(m,n) = akm(m-1,1) 当m!=0,n=0 akm(m,n) = akm(m-1,akm(m,n-1)) 当m!=0,n!=0 请写出递归算法。 **********/

int Akm(int m, int n)

/* 若 m<0 或 n<0 则返回-1 */ { if(m<0||n<0) return -1; if(m==0) return n+1;

if(m!=0&&n==0) return Akm(m-1,1);

if(m!=0&&n!=0) return Akm(m-1,Akm(m,n-1)); }

/**********

【题目】试写出求递归函数F(n)的非递归算法: F(n) = n+1 当n=0 F(n) = nF(n/2) 当n>0 **********/ int F(int n)

/* 如果 n<0 则返回 -1 */ { int t=1;

if(n<0) return -1; for(;n>0;n=n/2){ t=n*t; }

return t; }

/**********

【题目】试写出求递归函数F(n)的非递归算法: F(n) = n+1 当n=0 F(n) = nF(n/2) 当n>0 **********/ int F(int n)

/* 如果 n<0 则返回 -1 */ { int t=1;

if(n<0) return -1; for(;n>0;n=n/2){ t=n*t; }

return t; }

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库2015广工数据结构答案(6)在线全文阅读。

2015广工数据结构答案(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/294758.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: