符号表

符号表

符号表最主要的目的就是将一个键和一个值联系起来,符号表能够将存储的数据元素是一个键和一个值共同组成的 键值对数据,我们可以根据键来查找对应的值。
                                

 符号表中,键具有唯一性。

符号表在实际生活中的使用场景是非常广泛的,见下表:
应用
查找目的
字典
找出单词的释义
单词
释义
图书索引
找出某个术语相关的页码
术语
一串页码
网络搜索
找出某个关键字对应的网页
关键字
网页名称

代码实现:

public class SymbolTable<Key,Value> {
//	记录头节点
	private Node head;
//	记录符号表元素的个数
	private int N;
	private class Node{
//		键
		public Key key;
//		值
		public Value value;
//		下一个结点
		public Node next;
		public Node(Key key,Value value,Node next){
			this.key=key;
			this.value=value;
			this.next=next;
		}
	}
//	构造方法
	public SymbolTable() {
		this.head=new Node(null,null,null);
		this.N=0;
	}
//	返回符号表中元素的个数
	public int size() {
		return N;
	}
//	向符号表中添加元素
	public void put(Key key,Value value) {
		Node n=head;
//		遍历符号表
		while(n.next!=null) {
			n=n.next;
//			如果键在链表中存在,则只需要改变key所对应值
			if(n.key.equals(key)) {
				n.value=value;
				return;
			}
		}
//		如果不存在,则添加一个新结点(键值对)
		Node newNode=new Node(key,value,null);
		Node oldfirst=head.next;
		head.next=newNode;
		newNode.next=oldfirst;
		
		N++;

	}
	//删除符号表中键为key的键值对
	public void delete(Key key) {
		Node n=head;
		while(n.next!=null) {
			if(n.next.key.equals(key)) {
				n.next=n.next.next;
				N--;
				return;
			}
			n=n.next;
		}
		
	}
	//从符号表中获取key对应的值
	public Value get(Key key) {
		Node n=head;
		while(n.next!=null) {
			n=n.next;
			if(n.key.equals(key)) {
				return n.value;
			}

		}
		return null;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Luck&Strive

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值