码迷,mamicode.com
首页 > 编程语言 > 详细

python 哈希查找

时间:2018-11-26 02:33:45      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:nbsp   put   数据   global   lob   color   index   end   xbox   

 

import random

INDEXBOX=7       #哈希表元素个数
MAXNUM=13        #数据个数

class Node:      #声明链表结构
    def __init__(self,val):
        self.val=val
        self.next=None

global indextable
indextable=[Node]*INDEXBOX  #声明动态数组

def create_table(val):      #建立哈希表子程序
    global indextable
    newnode=Node(val)
    myhash=val%7              #哈希函数除以7取余数
   
    current=indextable[myhash]
    
    if current.next==None:
        indextable[myhash].next=newnode
    else:
        while current.next!=None:
            current=current.next
    current.next=newnode   #将节点加入链表

def print_data(val):       #打印哈希表子程序
    global indextable
    pos=0
    head=indextable[val].next         #起始指针
    print(   %2d:\t %val,end=‘‘)   #索引地址
    while head!=None:
        print([%2d]- %head.val,end=‘‘)
        pos+=1
        if pos % 8==7:
            print(\t)
        head=head.next
    print()

def findnum(num):     #哈希查找子程序
    i=0
    myhash =num%7
    ptr=indextable[myhash].next
    while ptr!=None:
        i+=1
        if ptr.val==num:
            return i
        else:
            ptr=ptr.next
    return 0



#主程序

data=[0]*MAXNUM
index=[0]*INDEXBOX


for i in range(INDEXBOX):  #清除哈希表
    indextable[i]=Node(-1)

print(原始数据:)
for i in range(MAXNUM):
    data[i]=random.randint(1,30)    #随机数建立原始数据
    print([%2d]  %data[i],end=‘‘) #并打印出来
    if i%8==7:
        print()

for i in range(MAXNUM):
    create_table(data[i])  #建立哈希表
print()

while True:
    num=int(input(请输入查找数据(1-30),结束请输入-1:))
    if num==-1:
        break
    i=findnum(num)
    if i==0:
        print(#####没有找到 %d ##### %num)
    else:
        print(找到 %d,共找了 %d 次! %(num,i))
    

print(\n哈希表:)
for i in range(INDEXBOX):
    print_data(i)          #打印哈希表
print()

 

python 哈希查找

标签:nbsp   put   数据   global   lob   color   index   end   xbox   

原文地址:https://www.cnblogs.com/sea-stream/p/10018088.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!