校园十大优秀青年评比_校园十大优秀青年评比

其他范文 时间:2020-02-28 08:08:33 收藏本文下载本文
【www.daodoc.com - 其他范文】

校园十大优秀青年评比由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“校园十大优秀青年评比”。

实验四:

校园十大优秀青年评比

1、数据存储:使用散列结构存储(hash结构)

2、哈希表的建立:

哈希函数:h(key)=key%HashLength,其中:k关键字为姓名所有拼音的ASCII码的累加值,HashLength为哈希表长,要有足够长。提取学生姓名的法有很多种,一可以采用直接输入姓名拼音,二可以把被选学生的拼音库存,通过一定的方法去提取。

3、解决冲突的方法:

可以使用开放地址法中的线性探测再散列:

hi=(h(key)+di)MOD m,i=1,2,……k(km-1)

增量取值di=1,2,3,……m-1(m一般为表长)

4、排序榜的解决:

不能使用一般的排序方法,因为此哈希表是散列结构,数据的存储并不是联系的,数据元素与数据元素之间并没有明显的关系。因此最好的解决方式就是利用一种特定关系,使这些数据元素通过一次性组织起来,使他们既具有一定的关系,又具有顺序关系(从大到小或从小到大)。最好

1的一种解决方案就是建立二叉排序树,以散列信息建立二叉排序树后,通过二叉树的中序,就可以得到排行榜,前10个或后10个就是上榜者。

5、数据结构的设计。在这里只给出数据元素的结构

typedef struct{

char name[20];姓名

char cla[30];班级专业

int count;

char YouXiuShiJi[50];

……

}

6、可能用到的函数:

哈希表构造函数

冲突处理函数

读取被选任姓名,解析姓名拼音,计算Key的函数

显示某个或全部被选人信息的函数

被选人得票排行榜函数

7、二叉排序树

定义:二叉排序树或是一棵空树,或是具有下列性质的二叉树:

1)若它的左子树不空,则左子树上所有结点的值均小

于它的根结点的值

2)若它的右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值

3)它的左、右子树也分别为二叉排序树

二叉排序树的插入

插入原则:若二叉排序树为空,则插入结点应为

新的根结点;否则,继续在其左、右子树上查找,直至某个叶子结点的左子树或右子树为空为止,则插入结点应为该叶子结点的左孩子或右孩子

二叉排序树生成:

从空树出发,经过一系列的查找、插入操作之后,可生成一棵二叉排序树

例{10,18,3,8,12,2,7,3}

算法:

typedef struct node

{int data;

struct node *lchild,*rchild;

}JD;

JD *insertbst(JD *r,int x)

{JD *p,*q,*s;

s=(JD *)malloc(sizeof(JD));

s->data=x;s->lchild=s->rchild=NULL;q=NULL;

if(r==NULL){r=s;return(r);}

p=r;

while(p!=NULL)

{q=p;

if(x

data)

p=p->lchild;

else

p=p->rchild;

}

if(xdata)

q->lchild=s;

else

q->rchild=s;

return(r);}

下载校园十大优秀青年评比word格式文档
下载校园十大优秀青年评比.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文