开发中常用的数据结构

在软件开发中,常用的数据结构具有各自的场景和应用。以下是一些常见的数据结构、它们的应用场景以及相应的代码示例:

  1. 数组(Array):

    • 场景:用于存储一组相同类型的元素,通过索引访问元素。
    • 例子:
      let numbers = [1, 2, 3, 4, 5];
      console.log(numbers[2]); // 输出 3
      
  2. 链表(Linked List):

    • 由节点组成,每个节点包含数据和指向下一个节点的引用
    • 场景:适用于频繁的插入和删除操作。
    • 例子:
      class Node {
        constructor(data) {
          this.data = data;
          this.next = null;
        }
      }
      
      let list = new Node(1);
      list.next = new Node(2);
      
  3. 栈(Stack):

    • 后进先出(LIFO)的数据结构
    • 场景:处理函数调用、表达式求值、撤销操作,浏览器的前进后退历史记录
    • 例子:
      let stack = [];
      stack.push(1);
      stack.push(2);
      let poppedItem = stack.pop(); // 输出 2
      
  4. 队列(Queue):

    • 先进先出(FIFO)的数据结构。
    • 场景:处理任务调度、广度优先搜索等。打印队列,任务调度
    • 例子:
      let queue = [];
      queue.push(1);
      queue.push(2);
      let dequeuedItem = queue.shift(); // 输出 1
      
  5. 树(Tree):

    • 用于表示层次关系的数据结构
    • 场景:用于表示层次关系,例如 DOM 树、文件系统树、二叉树。
    • 例子:
      class TreeNode {
        constructor(value) {
          this.value = value;
          this.children = [];
        }
      }
      
      let root = new TreeNode(1);
      root.children.push(new TreeNode(2));
      
  6. 图(Graph):

    • 由节点和边组成的数据结构
    • 场景:表示网络结构、社交网络等。社交网络中的好友关系。
    • 例子:
      class Graph {
        constructor() {
          this.nodes = [];
          this.edges = [];
        }
      }
      
      let socialNetwork = new Graph();
      // 添加节点和边...
      
  7. 哈希表(Hash Table):

    • 通过散列函数将关键字映射到数组的索引。
    • 场景:用于快速查找、存储键值对。
    • JavaScript 中的对象,键值对 { “name”: “John”, “age”: 25 }。
    • 例子:
      let hashMap = {};
      hashMap["name"] = "John";
      console.log(hashMap["name"]); // 输出 "John"
      
  8. 堆(Heap):

    • 用于快速找到最大或最小元素的数据结构。
    • 场景:用于优先队列、堆排序等。
    • 例子:
      let minHeap = [3, 5, 8, 2, 1];
      // 实际应用中可能使用专门的堆数据结构
      
  9. 集合(Set)和映射(Map):

    • 集合是不重复元素的集合。
    • 映射是键值对的集合。
    • 场景:集合用于存储唯一元素,映射用于存储键值对。
    • 例子:
      let uniqueNumbers = new Set([1, 2, 3, 1]);
      let keyValueMap = new Map();
      keyValueMap.set("name", "Alice");
      
  10. 链表哈希表(LinkedHashMap):

    • 哈希表和链表的结合,用于保持元素的插入顺序。
    • 场景:保持元素的插入顺序。Java 中的 LinkedHashMap。
    • 例子:在某些编程语言中,有专门的实现。
  11. Trie(字典树):

    • 用于高效存储和搜索字符串集合。
    • 场景:用于高效存储和搜索字符串集合。自动完成功能,单词搜索树。
    • 例子:
      class TrieNode {
        constructor() {
          this.children = {};
          this.isEndOfWord = false;
        }
      }
      
      let trie = new TrieNode();
      // 添加单词、搜索单词...
      

你可能感兴趣的:(【数据结构与算法】,数据结构)