最基础的Hash

type
  thash=^node;
  node=record
    state:longint;
    next:thash;
   end;

var
  a,i:longint;
  p:thash;
  hash:array[0..11]of thash;   //Hash表

procedure insert(k:longint);       //在哈希表中插入k
  var
    p:thash;
  begin
    new(p);     //新建指针地址
    p^.state:=k;       //p指针state域大小为k
    p^.next:=hash[k mod 11];    //p指针next域指向hash[k mod 11]
    hash[k mod 11]:=p;
  end;

function query(k:longint):boolean;     //查询Hash中是否有k
  var
    t:thash;
  begin
    p:=hash[k mod 11];
    while p<>nil do
        if p^.state=k then exit(true)     //如果当前p的state域等于k则输出true
          else p:=p^.next;
    exit(false);        //返回false
  end;

                 //以上为hash的程序

begin
  for i:=1 to 50 do
    insert(2*i);         //把偶数加入哈希表(只是不想自己打了)
  for i:=1 to 3 do
    begin
      read(a);
      writeln(query(a));         //查询
    end;
end.

这是一个极其基础的hash表,作为一个pascal党,并不常用指针,所以只是简单练一下。。

posted @ 2015-09-29 20:52  OI_songer  阅读(394)  评论(0编辑  收藏  举报