计算机科学中,数据结构(英語:data structure)是计算机中存储、组织数据的方式[1]

二叉树是数据结构的一种类型

数据结构意味着介面封装:一个数据结构可被视为两个函数之间的介面,或者是由数据类型联合组成的存储内容的访问方法封装。

大多数数据结构都由数列记录可辨识联合引用等基本类型构成。举例而言,可為空的引用(nullable reference)是引用与可辨识联合的结合体,而最简单的链式结构链表则是由记录与可空引用构成。

数据结构可透过编程语言所提供的数据类型引用及其他操作加以实现。一个设计良好的数据结构,应该在尽可能使用较少的时间与空间资源的前提下,支援各種程式執行。[2]

不同种类的数据结构适合不同种类的应用,部分資料結構甚至是為了解決特定問題而設計出來的。例如B树即為加快樹狀結構存取速度而設計的資料結構,常被應用在資料庫和檔案系統上。

正確的数据结构選擇可以提高演算法的效率(請參考演算法效率)。在電腦程式设计的過程中,选择适当的数据结构是一項重要工作。许多大型系统的編寫经验顯示,程式設計的困难程度与最终成果的质量与表现,取决于是否选择了最適合的数据结构。

系統架構的关键因素是数据结构而非算法的見解,导致了多种形式化的设计方法与编程语言的出现。绝大多数的语言都带有某种程度上的模块化思想,透过将数据结构的具体实现封装隐藏于使用者介面之后的方法,来让不同的应用程序能够安全地重用这些数据结构。C++JavaPython面向对象的编程语言可使用来達到這個目的。

因为数据结构概念的普及,现代编程语言及其API中都包含了多种預設的数据结构,例如C++标准模板库中的容器、Java集合框架以及微软的.NET Framework

常见的数据结构

编辑

参考文献

编辑
  1. ^ 谢柏青; 余晓歌. 算法与数据结构. 2001年. ISBN 7-04-009446-0. 
  2. ^ 杰伊·温格罗; 袁志鹏译. 数据结构与算法图解. 人民邮电出版社. : 1–174. ISBN 9787115509000. 

外部链接

编辑

📚 Artikel Terkait di Wikipedia

消息代理

列,用于多个接收者,提供可靠存储、保证消息分发、以及事务管理。 Amazon Web Services (AWS) Amazon Simple Queue Service (SQS) Apache ActiveMQ Apache Kafka Apache Qpid Cloverleaf

容器 (数据类型)

Java ConcurrentMap Paul E. Black (ed.), entry for data structure in Dictionary of Algorithms and Data Structures. US National Institute of Standards and

共递归

stack (LIFO), this yields depth-first traversal, while if the data structure is a queue (FIFO), this yields breadth-first traversal. Using recursion,

Python

# 将项目放入队列 await queue.put(item) # 指示生产完毕 await queue.put(None) async def consume(queue): while True: # 等待来自生产者的项目 item = await queue.get() if item is

可持久化线段树

可持久化线段树(又称函数式线段树)是一种可持久化数据结构(英語:Persistent data structure)。这种数据结构在普通线段树的基础之上支持查询某个历史版本,同时时间复杂度与线段树是同级,空间复杂度相较而言更高。在中国信息学奥林匹克竞赛中,由于引入者黄嘉泰姓名的缩写与前中共中央总书记、国家主席胡锦涛(H

隐马尔可夫模型

Seymore, Andrew McCallum, and Roni Rosenfeld. Learning Hidden Markov Model Structure for Information Extraction. AAAI 99 Workshop on Machine Learning for Information

Java集合框架

)。有序列表容許程式設計師依序地加入元素,並以同樣的順序取回元素,例如等候列表。在有序列表介面底下有兩個子介面,分別為列表(Lists)和佇列(Queue)。映射表使用索引來參考物件並取回其值。在映射表介面底下有一個子介面映射表(Map)。集是一種可供遍巡的無序集合,但當中不允許重複的物件存在。在其中有個子介面集(Set)。

线程池

object)的句柄绑定并设定超时时间。当可等待对象的句柄被通知(signaled)或指定的超时到期,这个等待对象的回调函数会被入列(queue)进入任务队列中并等待被一个工作线程执行。如果可等待对象(即函数的第二个参数)的句柄被设置为NULL,(由于可等待对象还没有signaled所以