算法(3.1 符号表)

符号表有时被称为字典,类似于那本将单词的释义按照字母顺序排列起来的历史悠久的参考书。在英语字典里,键就是单词,值就是单词对应的定义、发音和词源。符号表有时又叫做索引,即书本最后将术语按照字母顺序列出以方便查找的那部分。在一本书的索引中,键就是术语,而值就是书该术语出现的所有页码。

顺序查找(基于无序链表)

class Link<Key, Value>{
	private Node first;	//链表首节点
	
	private class Node{	//链表节点定义
		Key key;
		Value val;
		Node next;
		
		private 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.next!=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);	// 未命中,新增节点
		return;
	}
	
	public void show(){
		for (Node x=first; x!=null; x=x.next){
			System.out.println("key:" + x.key + " " + "value:" + x.val);
		}
	}
}
点赞