public class ST <Key,Value> {
/**
* 利用链表来存储符号表。这里的Node采用头插法创建,我在原有基础上创建了一个print方法。
*/
Node first;
public class Node {
Key key;
Value val;
Node next;
public Node(Key key, Value val, Node next) {
this.key = key;
this.val = val;
this.next = next;
}
}
public Value get(Key key) {
for (Node x = first; x != null; x = x.next) {
if (key.equals(x.key)) {
return x.val;
}
}
return null;
}
public void put(Key key,Value val){
for (Node x=first;x!=null;x=x.next)
if (key.equals(x.key)){
x.val=val;
return;
}
first =new Node(key,val,first);
}
public void print(){
while (first.next!=null){
System.out.print(first.key);
System.out.println(first.val);
first=first.next;
}
System.out.print(first.key);
System.out.println(first.val);
}
}
测试:
public class Test02 {
public static void main(String[] args) {
ST<Integer,String> a=new ST<Integer, String>();
a.put(1,"yihao");
// ST<Integer,String> b=new ST<Integer, String>();
a.put(2,"erhao");
a.put(3,"sanhao");
a.print();
/*
结果:
3sanhao
2erhao
1yihao
*/
}