无序符号表(链表实现,JAVA,算法(四))
来源:互联网 发布:淘宝大学 编辑:程序博客网 时间:2024/05/29 12:30
符号表简介:将键和值联系起来。能够将键值对插入符号表并希望在以后可以使用键找到对应的值。
链表作为一种简单的数据结构,也是最开始学习的,它可以稍加修改一下便可以用来实现队列和栈其它的数据结构。符号表使用链表无非就是实现简单,将它的每一个节点保存对应的键值对,就可以达到遍历键而找到值的操作了。链表的操作大都是线性的,例如无序插入(这里虽然是头结点插入,但由于需要遍历链表以查询是否重复键,也达到了线性复杂度),删除,查询…..
package com.lizi.datastructure.symboltable;import java.util.ArrayList;import java.util.List;//迭代器收集所有节点使用了标准库中的链表//链表实现的无序符号表,不能允许键或值为nullpublic class SequentialSearchST<Key,Value> { private Node first=null;//头结点 int size=0; private class Node{ Key key; Value value; Node next; public Node(Key key,Value value,Node next) { this.key=key; this.value=value; this.next=next; } } //给出的键找到值,如果存在键为空,那么循环可能中断,如果值为空,那么不存在与找到为null的键返回结果一致, //故不允许空的键或值 public Value get(Key key) { for (Node x=first; x!=null; x=x.next) { if(key.equals(x.key)) return x.value; } return null; } //查找给定的键,找到则更新其值,否则在头节点处新建节点 public void put(Key key,Value value) { if(key==null||value==null) return; for (Node x=first; x!=null; x=x.next) { if(key.equals(x.key)){ x.value=value; return; } } first=new Node(key, value, first); size++; } //删除对应的键值对节点,返回其值 public Value delete(Key key) { Node pre=first; Value value=null; for (Node now=first; now!=null;pre=now, now=now.next) { if(key.equals(now.key)){ value=now.value; size--; if(key.equals(first.key)) first=now.next; else pre.next=now.next; } } return value; } //未排序的所有键加入到迭代器中 public Iterable<Key> keys() { List<Key> keys=new ArrayList<Key>(size); for (Node x=first; x!=null; x=x.next) { keys.add(x.key); } return keys; } public boolean contains(Key key) { return get(key)!=null; } public boolean isEmpty() { return size==0; } public int size() { return size; } public void print() { System.out.println(); for (Node x=first; x!=null; x=x.next) { System.out.print(x.value+" "); } }}
阅读全文
0 0
- 无序符号表(链表实现,JAVA,算法(四))
- 无序链表实现符号表
- 有序符号表(数组实现,JAVA,算法(四),二分法)
- 有序符号表(二叉树实现,JAVA,算法(四))
- 数据结构实现之无序符号表SequentialSearchST(使用链表实现)
- [算法]Java 实现 简单MyNode类型 无序链表 递归 添加 删除 遍历
- 用无序链表实现字典ADT(C++描述)
- 用无序链表实现字典ADT(C++描述)
- 无序链表实现优先队列
- 集合的无序链表实现
- 符号表之四:符号表的链表实现和哈希表实现
- 无序链表排序
- 无序链表查找
- 顺序查找(基于无序链表)
- 算法3.1 顺序查找(基于无序链表)(algs4)
- 算法(3.1 符号表)
- ObjectARX编程(四) --------符号表简述
- 常见算法学习及其Java实现--有序区和无序区的冒泡算法实现
- Java内存模型之happens-before
- 遇到的一些面试题
- 33对象4---数组
- Swift3 Xcode8 Ios10 开发笔记(每日更新)
- 我的书单
- 无序符号表(链表实现,JAVA,算法(四))
- 新人
- PHP方法之gettype
- svn相关资料
- HDU 畅通工程续(Dijkstra)
- 忠于用户是海尔研发创新活力的源泉
- 技术总监和首席技术执行官的区别和职责
- Spark Standalone架构设计要点分析
- 搭建SSM项目框架全过程及思考