美文网首页
用链表实现符号表

用链表实现符号表

作者: 梁森的简书 | 来源:发表于2021-02-08 16:45 被阅读0次

成员变量:

  1. 头节点
  2. 符号表长度
    方法:
  3. 添加元素
  4. 删除元素
  5. 通过key获取元素
private class SymbolNode: NSObject {
    var key: String!
    var value: String!
    var next: SymbolNode?
    init(key: String, value: String, next: SymbolNode?) {
        self.key = key
        self.value = value
        self.next = next
    }
}

/// 符号表
struct SymbolTable<T> {
    
    private var head = SymbolNode(key: "", value: "", next: nil)
    private var length = 0
    
    init() {
        
    }
    
    mutating func put(key: String, value: String) {
        var n = head
        while n.next != nil {
            n = n.next!
            if n.key == key {   // 已经有这个key了
                n.value = value
                return
            }
        }
        let newNode = SymbolNode(key: key, value: value, next: head.next)
        head.next = newNode // 新插入的节点放在第一位
        length += 1
    }
    
    mutating func delete(key: String) -> String {
        var n = head
        while n.next != nil {
            n = n.next!
            if n.next?.key == key {   // 找到了这个key
                n.next = n.next?.next
                length -= 1
                return (n.next?.value!)!
            }
        }
        return ""
    }
    
    func get(key: String) -> String {
        var n = head
        while n.next != nil {
            n = n.next!
            if n.key == key {   // 找到了这个key
                return n.value
            }
        }
        return ""
    }
    
    func printSymbolTable() {
        var n = head
        while n.next != nil {
            n = n.next!
            print(n.value)
        }
    }
    
}

demo地址:demo地址:https://github.com/yangguanghei/studyDateStructure

相关文章

  • 算法 -- 符号表

    顺序查找无序存储的符号表 -- 链表 有序符号表(基于数组)二分查找 符号表用两个数组实现:一个存放 key,一个...

  • 用链表实现符号表

    成员变量: 头节点 符号表长度方法: 添加元素 删除元素 通过key获取元素 demo地址:demo地址:http...

  • 《算法》笔记 7 - 符号表、顺序查找、二分查找

    符号表API有序符号表成本模型 无序链表中的顺序查找实现性能 有序数组中的二分查找实现性能 现代计算机和网络使人们...

  • HashMap常见问题

    实现原理hashmap基于数组+链表+红黑树实现,jdk1.8以前是基于数组+链表。 为啥用数组+链表用数组是因为...

  • 用数组实现栈、队列

    用数组实现一个栈 用数组实现一个队列 用单链表实现给队列

  • 自己用单链表实现的LinkedList

    上面学习了单链表,现在我们用单链表实现LinkedList。实现LinkedList主要就是实现增删改查这几个操作...

  • C# 链表

    链表介绍 Unity 用C#写的链表类 简述链表和数组的区别 Unity--链表实现贪吃蛇

  • 用JavaScript实现双向链表

    用JavaScript实现双向链表 前言 JavaScript本身是没有指针的,所以要实现链表的话没有现成的数据结...

  • 链表实现栈(LIFO)、队列(FIFO)

    今天来用链表实现栈 栈可以用链表实现,压栈操作即在链表头赋值,弹栈只需要将链表头元素指向下一个即可 由此可见,链表...

  • 表、栈和队列

    数据结构与算法分析-c语言描述抽象数据类型(ADT)1、表ADT可以用由数组实现。链表实现。双链表。循环链表。 -...

网友评论

      本文标题:用链表实现符号表

      本文链接:https://www.haomeiwen.com/subject/kaqfxltx.html