数据结构(中国矿大)数据结构答案_第1页
数据结构(中国矿大)数据结构答案_第2页
数据结构(中国矿大)数据结构答案_第3页
数据结构(中国矿大)数据结构答案_第4页
数据结构(中国矿大)数据结构答案_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章答案:

一、选择题

DCBACCBBCC

二、填空题

1.集合、线性结构、树、图

2.一对一、一对多、多对多

3.可执行性、有穷性、确定性

4.逻辑结构、物理结构、运算、算法

5.数据对象、数据关系和基本操作

三、简答题

1.数据结构是一门研究在非数值计算的程序设计问题中,计算机的操作对象及对象间

的关系和施加于对象的操作等的学科。

2.数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻

接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系

的表示。数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无

关,而运算的实现则是依赖于存储结构。

3.“数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学

的概念。作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一

是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。而数据类型是

值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。

四、给出以下算法的时间复杂度

1.0(n)2.0(/)3.0(Vn)4.0(log2n)5.0(1)

第二章答案:

一、选择题:DBABB,BBBCD,AC

二、填空题:

1.p->next!=NULL。

2.L->next==NULLo

3.顺序表,链表。

4.0(1),0(n)o

5.大,小。

三、简答题:

1.比较顺序表和链表这两种线性表不同存储结构的特点。

顺序表存储密度大存储空间连续静态分配随机存取插、删效率低

链表存储密度大存储空间可不动态分配顺序存取插、删效率高

连续

2.简述头结点的作用。

头结点的作用是使得单链表在表头位置的插、删操作同中间位置的插、删操作完全相

同。即使“空表”与“非空表”的操作统一,也使“表头结点”与其他位置结点的操

作完全一致,无须特殊处理。

3.写出单链表存储结构的C语言描述。

typedefintDataType;

typedefstructNode

{DataTypedata;

structNode*next;

}LinkList;

四、完善程序题:

1.

structNode*next;

p=p->next;

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

s->next=p->next;

p->next=s;

2.

struct

p=p->next;

p->next!=q

p->next=q->next;

free(q);

五、算法设计题:

1.已知长度为n的线性表A中的元素是整数,写算法求线性表中值大于item的元素个数。

分两种情况编写函数:(1)线性表采用顺序存储;(2)线性表采用单链表存储。

(1)线性表采用顺序存储

#defineMAX1024

typedefintDataType;

typedefstruct

{DataTypedata[MAX];

intlast;

}SeqList;

intLocateElem(SeqList*L,DataTypeitem)

{inti,j=0;

for(i=0;i<=L->last;i++)

if(L->data[i]>item)j++;

returnj;

)

(2)线性表采用单链表存储

typedefintDataType;

typedefstructNode

{DataTypedata;

structNode*next;

}LinkList;

intlocateElem(LinkList*L,DataTypeitem)

{LinkList*p=L->next;

inti=0;

while(p)

if(p->data>item)i++;

returni;

)

2.试写一算法实现对不带头结点的单链表H进行就地(不额外增加空间)逆置。

typedefintDataType;

typedefstructNode

{DataTypedata;

structNode*next;

}LinkList;

LinkList*Reverse(LinkList*L)

{LinkList*p,*q;

if(!L)return;

p=H->next;q=H->next;L->next=NULL;

while(q)

{q=q->next;

p->next=L;

L=p;

P=q;

)

returnL;

)

第三章答案

一、选择题:

CCA

二、填空题:

1LIFO,FIFO。

2acdeb。

3s->top==-l,s->top==MAXSIZE-l。

4队头,队尾。

53.

三、简答题:

1.栈上的基本运算有哪些?

栈的基本运算有:

(1)初始化栈initStack(s):构造了一个空栈s。

(2)判栈空empty(s):若栈s为空栈,返回值为“真"(1),否则返回值为"假”(0)。

(3)入栈push(s,x):在栈s的顶部插入一个新元素x,x成为新的栈顶元素。

(4)出栈pop(s):删除栈s的栈顶元素。

(5)读栈顶元素top(s):栈顶元素作为结果返回,不改变栈的状态。

2.循环顺序队列的存储结构图示及C语言描述?

C语言描述:循环顺序队列图示:

#defineMAXSIZE1024

typedefintDataType;

typedefstruct

{DataTypedata[MAXSIZE];

intrear,front;

}SeQueue;

SeQueue*sq;

rear

3.简述栈和队列有哪些联系与区别?

栈和队列都是运算运算受限的线性表,逻辑结构相同;都可以顺序存储和链接存储,存

储结构也相同;插入和删除运算都限制在线性表的表端完成,且不需要查找运算。

二者差别主要体现在运算的限制不同:栈是后进先出(LIFO)的线性表,限制它的插入

和删除操作仅在表的一端进行。队列是先进先出(FIFO)的线性表,只允许在表的一端进行

插入,而在表的另一端进行删除。

四、算法设计题:

通常称正读和反读都相同的字符序列为“回文〃,例如,〃abedeedeba"、"abedeba〃是回

文。若字符序列存储在一个单链表中,编写算法判断此字符序列是否为回文。(提示:将一

半字符先依次进栈)

#definemaxsize100

typedefchardatatypel;

typedefstruct

{datatypeldata[maxsize];

inttop;

}seqstack;

typedefintdatatype;

typedefstructnode

{datatypedata;

structnode*next;

}Linklist;

Duichen(Linklist*head)

{inti=l;

Linklist*p;

seqstack*s;

s=initSeqStack();

p=head->next;n=O;

while(p){n++;p=p->next;}

p=head->next;

while(i<=n/2)

{push(s,p->data);i++;}

if(n%2!=0)p=p->next;

while(p&&p->data==pop(s))

p=p->next;

if(p)return0elsereturn1;

)

第四章答案

一、选择题

CCCBBDADCA

二、填空题

1.字符

2.对应位置字符相同

3.5

4.线性顺序以行为主序以列为主序

5.8950

6.288字节128210721276

7.(n-m+1)*m

8.行下标列下标元素值

9.深度

10.53

三、应用题

1.

①Replace(s,'STUDENT',q)='IAMAWORKER'

②因为SubString(s,6,2)='A';SubString(s,7,8)='STUDENT)

Concat(t,SubString(s,7,8))-(GOODSTUDENT'

所以Concat(SubString(s,6,2),Concat(t,SubString(s,7,8)))='AGOODSTUDENT'

2.

⑴$的next与nextval值分别为012123456789和002002002009,p的next与nextval

值分别为0,1,2,1,2,3和0,0,2,0,0,3。

S的next与nextval值分别为-101012345678和T,-1,1,-1,-1,1,-1,-1,1,-1,-18,p

的next与nextval值分别为T,0,1,0,1,2和T产1,1,T,-1,2。

(2)利用BF算法的匹配过程:利用KMP算法的匹配过程:

第一趟匹配:aabaabaabaac第一趟匹配:aabaabaabaac

aabaac(i=5,j=5)aabaac(i=5,j=5)

第二趟匹配:aabaabaabaac第二趟匹配:aabaabaabaac

aa(i=2,j=l)(aa)baac(i=8,j=5)

第三趟匹配:aabaabaabaac第三趟匹西己:aabaabaabaac

a(i=2,j=0)(成功)(aa)baac(i=12,j=6)

第四趟匹配:aabaabaabaac

aabaac(i=8,j=5)

第五趟匹配:aabaabaabaac

aa(i=5,j=l)

第六趟匹配:aabaabaabaac

a(i=5,j=0)

第七趟匹配:aabaabaabaac

(成功)aabaac(i=12,j=6)

3.

(1)可列表为:(2)可列表为:

885

323664

16-2

368

259

546

435

785

653

812

其中第一行为行数、列数和元素个数。

4.

(1)k=(2n-j+2)(j-l)/2+i-j+l(当时,本题n=4)

k=(2n-i+2)(i-l)/2+j-i+l(当i〈j时,本题n=4)

(2)稀疏矩阵的三元组表为:

s=((4,4,6),(1,1,1),(1,4,2),(2,2,3),(3,4,5),(4,1,2),(4,3,5)。其中第一个三元组

是稀疏矩阵行数、列数和非零元素个数。其它三元组均为非零元素行值、列值和元素值。

5.

Head(Tail(Head(Head(LI))))

Head(Head(Head(Tail(Head(Tail(L2))))))

四、算法设计题

1.

intCountlnt()

//从键盘输入字符串,连续的数字字符算作一个整数,统计其中整数的个数。

{inti=0,a[];//整数存储到数组a,i记整数个数

scanf("%c",&ch);//从左到右读入字符串

while(ch!=)//是字符串结束标记

if(isdigit(ch))//是数字字符

{num=0;//数初始化

while(isdigit(ch)&&ch!=)//拼数

(

num=num*10+'ch'-'O';

scanf("%c”,&ch);

)

a[i]=num;i++;

if(ch!=)

scanf("%c”,&ch);//若拼数中输入了则不再输入

}//结束while(ch!=)

printf("共有%d个整数,它们是:"i);

for(j=0;j<i;j++)

{printf("%6d",a[j]);

if((j+1)%10=0)printf(“\n”);

}//每10个数输出在一行上

voidinsert(char*s,char*t,intpos)

〃将字符串t插入字符串s的第pos个位置。

{

inti=l,x=0;char*p=s,*q=t;//p,q分别为字符串s和t的工作指针

if(pos<l){printf("pos参数位置非法\n");exit(0);}

while(*p!=>\0'&&i<pos){p++;i++;}〃查pos位置

〃若pos小于串s长度,则查到pos位置时,i=poso

if(*P=70'){printf(〃%d位置大于字符串s的长度〃,pos);exit(0);}

else〃查找字符串的尾

while(*p!='/O'){p++;i++;}〃查到尾时,i为字符'\O'的下标,

p也指向‘\O'。

while(*q!='\O'){q++;x++;)〃查找字符串t的长度x,循环结束

时q指向‘\O'。

for(j=i;j>=pos;j-){*(p+x)=*p;p-;}〃串s的pos后的子串右移,

空出串t的位置。

q-;〃指针q回退到串t的最后一个字符

for(j=l;j<=x;j++)*p—=*q-;〃将t串插入到s的pos位置上

第五章答案

一、单选题

1~5DDABD6~10DCBBB

二、算法分析题

l.stack[tp]=t;p=stack[tp-l];p++tp

2.p=p->lchildp=p->rchild

三、应用题

1.(I)kh-1(h为层数)

(2)因为该树每层上均有K、1个结点,从根开始编号为1,则结点i的从右向左数第2个

孩子的结点编号为ki»设n为结点i的子女,则关系式(i-l)k+2<=n<=ik+l成立,因i是整数,

故结点n的双亲i的编号为[(n-2)/k]+1。

(3)结点n(n>l)的前一结点编号为n-1(其最右边子女编号是(n-l)*k+l),故结点n的第i

个孩子的编号是(n-l)*k+l+i。

(4)根据以上分析,结点n有右兄弟的条件是,它不是双亲的从右数的第一子女,即

(n-l)%k!=O,其右兄弟编号是n+1。

2.N个结点的K叉树,最大高度N(只有一个叶结点的任意k叉树)。设最小高度为H,第

i(l<=i<=H)层的结点数K",则N=l+k+k2+-+kf由此得H=logK(N(K-l)+l)

WPL=2*4+3*4+5*3+6*2+7*2+9*2=79

5.将频度均扩大100倍

根据上图编码如下:

a:00b:010c:100d:0111e:101f:llg:0110

对7个字母进行等长编码,至少要用三位二进制数。而根据哈夫曼编码的平均码长为:

2*0.3+3*0.16+4*0.04+4*0.08+3*0.10+3*0.11+2*0.20=2.59

2.59/3=86.3%

其平均码长是等长码的86.3%,所以平均压缩率为13.7%。

四、算法设计题

1.假设一个仅包含二元运算符的算术表达式以链表形式存储在二叉树BT中,写出计算该算

术表达式值的算法。

[分析]以二叉树表示算术表达式,根结点用于存储运算符。若能先分别求出左子树和右子树

表示的子表达式的值,最后就可以根据根结点的运算符的要求,计算出表达式的最后结果。

typedefstructnode

{ElemTypedata;

floatval:

charoptr;〃只取

structnode*lchild,*rchild;

JBiNode,*BiTree;

floatPostEval(BiTreebt)

//以后序遍历算法求以二叉树表示的算术表达式的值

{floatlv,rv;

if(bt!=null)

(

lv=PostEval(bt->lchild);//求左子树表示的子表达式的值

rv=PostEval(bt->rchild);//求右子树表示的子表达式的值

switch(bt->optr)

casevalue=lv+rv;break;

case',:value=lv-rv;break;

casevalue=lv*rv;break;

case7':value=lv/rv;

)

)

return(value);

)

2.二叉树按二叉链表形式存储:

(1)写一个建立二叉树的算法。

(2)写一个判别给定的二叉树是否是完全二叉树的算法。

【算法分析】

二叉树是递归定义的,以递归方式建立最简单。判定是否是完全二叉树,可以使用队列,在

遍历中利用完全二叉树“若某结点无左子女就不应有右子女”的原则进行判断。

【算法源代码】

BiTreeCreat()/*建立二叉树的二叉链表形式的存储结构*/

(

ElemTypex;

BiTreebt;

scanf("%d",&x);

if(x==O)bt=NULL;

elseif(x>0)

{bt=(BiTNode*)malloc(sizeof(BiTNode));

bt->data=x;bt->lchild=creat();bt->rchild=creat();

)

return(bt);

}/*结束creat*/

intJudgeComplete(BiTreebt){

/*判断二叉树是否是完全二叉树,如是,返回1,否则,返回0*/

inttag=0;

BiTreep=bt,Q[50];/*Q是队列,元素是二叉树结点指针,容量足够大*/

if(p==NULL)return1;

Queuelnit(Q);

Queueln(Q,p);/*初始化队列,根结点指针入队*/

while(!QueueEmpty(Q))

p=QueueOut(Q);

if(p->lchild&&!tag)Queueln(Q,p->lchild);/*左子树入队*/

elseif(p->lchild)return0;/*前边已有结点为空,本结点不空*/

elsetag=l;/*首次出现结点为空*/

if(p->rchild&&!tag)Queueln(Q,p->rchild);/*右子女入队*/

elseif(p->rchild)return0;

elsetag=l;

}/*while*/

return1;

}/*JudgeComplete*/

3.二叉树采用二叉链表存储

(1)编写计算整个二叉树高度的算法(二叉树的高度也叫二叉树的深度)。

(2)编写计算二叉树最大宽度的算法(二叉树的最大宽度是指二叉树所有层中结点个数的

最大值)。

【算法分析】

二叉树是递归定义的,其运算最好采取递归方式。求最大宽度可采用层次遍历的方法,记下

各层结点数,每层遍历完毕,若结点数大于原先最大宽度,则修改最大宽度。

【算法源代码】

intHeight(BiTreebt)/*求二叉树bt的深度*/

{inthl,hr;

if(bt==NULL)return(O);

else{

hl=Height(bt->lchild);

hr=Height(bt->rchild);

if(hl>hr)return(hl+1);

elsereturn(hr+l);}

)

intWidth(BiTreebt)/*求二叉树bt的最大宽度*/

{if(bt==NULL)return(0);/*空二叉树宽度为0*/

else

{BiTreep,Q[50];/*Q是队列,元素为二叉树结点指针,容量足够大*/

intfront=lzrear=ljast=l;

inttemp=0,maxw=0;/*temp记局部宽度,maxw记最大宽度*/

Q[rear]=bt;/*根结点入队列*/

while(front<=last)

{p=Q[front++];temp++;/*同层元素数力口1*/

if(p->lchild!=NULL)Q[++rear]=p->lchild;/*左子女入队*/

if(p->rchild!=NULL)Q[++rear]=p->rchild;/*右子女入队*

if(front>last)/*一层结束*/

{last=rear;/*last指向下层最右元素,更新当前最大宽度*/

if(temp>maxw)maxw=temp;

temp=O;}/*if*/

}/*while*/

return(maxw);

)

}/*结束width*/

第六章答案:

一、选择题

1-5ABABB6-10BACBB

二、填空题

1.2

2.n(n・l)/2n(n-l)

3.n-1

4.0(M)O(n+e)

5.e2e

6.出边入边

7.0(n)0(e)

8.n(n-l)/2

9.n_

10.9

三、判断题

1-5JXXXJ6-10XXXJJ

四、应用题

1.

(1)G1最多n(n-l)/2条边,最少n・1条边

(2)G2最多n(n-l)条边,最少n条边

(3)G3最多n(n-l)条边,最少n-l条边

2.n-1

3.证明:具有n个顶点n-1条边的无向连通图是自由树,即没有确定根结点的树。每个结

点均可当根。若边数多于n-l条。因一条边要连接两个结点。则必因加上这一条边而使两个

结点多了一条通路,即形成回路。形成回路的连通图不再是树。

4.证明:该有向图顶点编号的规律是让弧尾顶点的编号大弧头顶点的编号。由于不允许从

某顶点发出并回到白身顶点的弧,所以邻接矩阵主对角元素均为0,先证明该命题的充分条

件。由于弧尾顶点的编号均大于弧头顶点的编号。在邻接短阵中,非零元素(A[i][j]=l)自然

是落到下三角矩阵中:命题的必要条件是要使上三角为0,则不允许出现弧头顶点编号大孤

尾顶点,编号的弧。否则就必然存在环路。

五、算法设计题

1.voidCreatGraph(AdjListg)

〃建立有n个顶点和m条边的无向图的邻接表存储结构

{intn,m;

scanf(',%d%d",&n,&m);

for(i=l,i<=n;i++)〃输入顶点信息,建立顶点向量

(

scanf(&g[i].vertex);

g[i].firstarc=null;}

for(k=l;k<=m;k++)〃输入边信息

(

scanf(&vl,&v2);〃输入两个顶点

i=GraphLocateVertex(g,vl);

j=GraphLocateVertex(g,v2);〃顶点定位

p=(ArcNode*)malloc(sizeof(ArcNode));〃申请边结点

p->adjvex=j;

p->next=g[i].firstarc;

g[i].firstarc=p;〃将边结点链入

p=(ArcNode*)malloc(sizeof(ArcNode));

p->adjvex=i;

p->next=g[j].firstarc;

g[j].frstarc=p;

)

)

}〃算法CreatGraph结束

2.

题目分析:在有向图的邻接表中,求顶点的出度容易,只要简单在该顶点的邻接点链表中查

结点个数即可。而求顶点的入度,则要遍历整个邻接表。

intcount(AdjListgzintk)

〃在n个顶点以邻接表表示的有向图g中,求指定顶点k(l<=k<=n)的入度。

{intcount=0;

for(i=l;i<=n;i++)〃求顶点k的入度要遍历整个邻接表。

if(i!=k)〃顶点k的邻接链表不必计算

{p=g[i].firstarc;〃取顶点i的邻接表。

while(p)

{if(p->adjvex==k)count++;

p=p->next;

}//while

}//if

return(count);〃顶点k的入度.

第七章答案

一、选择题:

CDBCDC

二、填空题:

1插入。

20(nlog2n),0(Iog2n)。

3{27,38,13}49{76,97,65}。

40(nlog2n),归并。

5直接插入,起泡。

6堆排序

7简单选择。

三、简答题:

1.常用的实现排序的方法有几大类?它们的实现思想是什么?

插入排序的基本思想是:

将一个待排序记录按照排序码的大小插入到一个有序序列的适当位置,使得插入后的序

列仍然有序,直到所有记录全部插入到有序序列中。

交换排序的基本思想是:

两两比较待排序记录的排序码,不符合排列顺序则交换记录,直到所有记录的排序码都

符合排序要求。

选择排序的基本思想是:

每一次从待排序记录序列中选取一个排序码最小(或最大)的记录,放在待排序记录序

列的最前面(或最后面),重复此过程,直到所有的记录按排序码排好序。

归并排序的基本思想是:

利用“归并”技术实现的排序方法。所谓归并就是将两个或多个有序表合并成一个有序

表的过程。如果是将两个有序表合并成一个有序表称为二路归并,二路归并是最简单和最常

用的。

基数排序的基本思想是:

基数排序是基于排序码的结构分解,然后通过“分配”和“收集”方法实现的排序。

2.给定排序码的序列{39、33、13、15、58、41、27、46、23}。请回答:

(1)采用希尔(Shell)排序(步长分别为5,3,1),写出各趟排序结果。

(2)采用快速排序的方法进行排序,写出各趟排序结果。

(1)希尔排序:

393313155841274623(初始)

392713155841334623(1趟希尔排序结果)

152713334623395841(2趟希尔排序结果)

131523273339414658(3趟希尔排序结果)

(2)快速排序:

393313155841274623(初始)

{2333131527)39{414658}(1层划分结果)

{1513}23{3327}3941{4658}(2层划分结果)

{13}1523{27}33394146{58}(3层划分结果)

3.判断下列序列是否为堆?如果不是,则把它们调整成堆。

(1)(503,87,512,61,908,170,896,275,653,462)

(2)(12,70,33,65,24,48,92,86,33,55)

(3)(100,55,97,30,23,86,60,8,12)

(4)(5,56,18,40,38,27,58,30,78,28,98)

(1)不是堆,调整为大根堆:(908,653,896,503,462,170,512,275,61,87)

(2)不是堆,调整为小根堆:(12,24,33,33,55,48,92,86,65,70)

(3)是大根堆

(4)不是堆,调整为小根堆:(5,28,18,30,38,27,58,40,78,56,98)

4,设待排序文件各个记录的排序码序列为:19、23、2、67、39、91、43、25,进行堆排

序,请回答:

(1)画出初始建成的大根堆对应的完全二叉树。

(2)写出初始大根堆序列。

(3)画出第一趟堆排序后对应的完全二叉树。

(1)初始建成的大根堆(3)第一趟堆排序后对应的完全二叉树

(2)初始大根堆序列:916743253921923

四、完善程序题:

structnode*next;

q->next->data<p->data

q=q->next;

p->next=q->next;

q->next=p;

第八章答案:

一、判断题

1.V

2.V

3.X

4.X

5.X

6.V

7.V

8.X

9.X

10.X

11.X

12.V

13.V

14.X

15.X

16.X

17.V

18.X

19.x

20.X

21.X

22.X

23.X

24.X

25.V

26.X

27.V

二、填空题

1.n,n+1

2.4

3.6,9,11,12

4.5(4,9,14,17,20)

5.1,3,6,8,11,13,16,19

6.5,96

7.2,4,3

8.哈希函数,解决冲突的方法,选择好的哈希函数,处理冲突的方法,均匀,简单

9.小于等于表长的最大素数或不包含小于20的质因子的合数

10.16

11.Llog2nJ+1

12.45,45,46(块内顺序查找)

13.k(k+l)/2

14.30,31,5(块内顺序查找)

15.顺序存储或链式存储,顺序存储且有序,块内顺序存储,块间有序,散列存储

16.(n+l)/2

17.+

18.顺序表,树表,哈希表,开放定址方法,链地址方法,再哈希,建立公共溢出区

19.直接定址法

20.四色

2

三、选择题

1-5ADCDC

6-10BCDCB

11-12DC

四、综合题

1、

Addr012345678910

221461367304153

H(22)=22%ll=0;没冲突,填入addr(0);H(41)=41%11=8;没冲突,填入addr⑻;

H(53)=53%11=9;没冲突,填入addr(9);H(46)=46%11=2;没冲突,填入addr⑵;

H(30)=30%U=8;冲突,则di=l;hi=(H(30)+di)%ll=9;还冲突;H=-l;h2=(H(30)+d2)%U=7;没冲突,

填入addr(7);

H(13)=13%11=2;冲突,则di=l;hi=(H(13)+di)%l:L=3;没冲突,填入addr⑶;

H(1)=1%11=1;没冲突,填入addr⑴;

H(67)=67%n=l;冲突,则H=l;hi=(H(67)+di)%ll=2;还冲突;d2=-l;h2=(H(67)+d2)%n=0;还冲突

没冲突,填入

d3=4;h2=(H(67)+d2)%ll=5;addr⑸;

ASL=-+-+-+-+—x3+—x2+-+—x4=—

888888884

2、

Addr0123456789101112

14276855192084231011

H(19)=19%13=6;没冲突,填入addr⑹;

H(14)=14%13=1;没冲突,填入addr⑴;

H(23)=23%13=10;没冲突,填入addr(10);

H(10)=10%13=10;冲突,addr(6);di=l,hl=(H(10)+di)%13=ll;没冲突,填入addr(ll);

H(68)=68%13=3;没冲突,填入addr⑶;

H(20)=20%13=7;没冲突,填入addr⑺;

H(84)=84%13=6;冲突,di=l,hl=(H(84)+di)%13=7;冲突,d2=2,h2=(H(84)+di)%13=8;没冲突,

填入addr⑻;

H(27)=27%13=1;冲突,di=l,hl=(H(27)+di)%13=2;没冲突,填入addr⑵;

H(55)=55%13=3;冲突,di=l,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论