当前位置:首页 > 数据结构课程设计报告
《数据结构》课程设计
义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。我觉得作为一名计科专业的学生,这次课程设计是很有意义的。更重要的是如何把自己平时所学的东西应用到实际中。虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着学习,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它。
xxxx大学xxxx学院xxxx专业学号: xxxxxxx 姓名 :jenery6
17
《数据结构》课程设计
附录:源程序
#include
using namespace std;
ifstream in_file; ofstream out_file;
int D[10]={1,3,5,8,13,15,17,21,27,34};//伪随机数序列 int count;//当前数据元素个数 int sizeindex;//哈希表的长度 char *sign;//冲突的标志
struct Data {
string name; string phone; string address;
}; Data *intermediate_data;
int Collision_Random(int key,int i)//伪随机数探量观测再散列法处理冲突{
int Re_key; if(sign[key]=='1') {
xxxx大学xxxx学院xxxx专业 学号: xxxxxxx 姓名 :jenery6 18
《数据结构》课程设计
}
Re_key=(key+D[i])%sizeindex; return Re_key;//归回新的要害码
return -1; }
void Init_HashTable_by_name(string name,string phone,string address)//以姓名为关键字建立哈希表
{
int i=0; int key; char*p;
for(key=0,p=&name[0];*p;p++)
key=key+*p;
key=keyB;
while(sign[key]=='1') { }
if(key==-1)
exit(1);
key=Collision_Random(key,i+1);
count++;
intermediate_data[key].name=name;//将数据存入哈希表 intermediate_data[key].address=address; intermediate_data[key].phone=phone; sign[key]='1';//设置冲突标志 }
xxxx大学xxxx学院xxxx专业 学号: xxxxxxx 姓名 :jenery6 19
《数据结构》课程设计
int Collision_Rehash(int key,string str)//再哈希法处理冲突 {
int Re_key;
int num1=(str[0]-'0')*1000+(str[1]-'0')*100+(str[2]-'0')*10+(str[3]-'0'); int num2=(str[4]-'0')*1000+(str[5]-'0')*100+(str[6]-'0')*10+(str[7]-'0'); int num3=(str[8]-'0')*100+(str[9]-'0')*10+(str[10]-'0'); Re_key=num1+num2+num3; Re_key=(Re_key+key)%sizeindex; return Re_key; }
void Init_HashTable_by_phone(string name,string phone,string address)//以电话号码为关键字建立哈希表
{
int key; char*p;
for(key=0,p=&phone[0];*p;p++)
key=key+*p;
key=keyB;
while(sign[key]=='1') { } count++;
intermediate_data[key].name=name; intermediate_data[key].address=address; intermediate_data[key].phone=phone;
key=Collision_Rehash(key,phone);
xxxx大学xxxx学院xxxx专业 学号: xxxxxxx 姓名 :jenery6 20
共分享92篇相关文档