數據結構(01)—— 數據結構的基本概念

408前置學習C語言基礎也可以看如下專欄:打怪升級之路——C語言之路_ankleless的博客-CSDN博客

目錄

1.? 基本概念

1.1 數據

1.2 數據元素

1.3 數據項

1.4 組合項

1.5 數據對象

1.6 數據類型

2. 數據結構

2.1 邏輯結構

2.2 存儲結構

2.3 數據的運算


在學習之前,我們可以思考一個問題,數據結構在學什么呢?

隨著時代的進步,越來越多的問題需要從現實轉為信息化,而數據結構就是為了解決如何把現實問題信息化以及怎么高效存儲和處理信息這兩大問題。

先簡單看如下的思維導圖:

1.? 基本概念

1.1 數據

數據是信息的載體,是描述客觀實物屬性的數、字符以及所有能輸入到計算機中并能被計算機程序識別和處理的符號的集合。數據是計算機程序加工的原料。

個人理解:?在現代計算機體系中,所有數據的底層存儲形式都是二進制

1.2 數據元素

數據元素是數據的基本單位,通常作為一個整體進行考慮和處理。一個數據元素可由若干個數據項組成。

1.3 數據項

數據項是構成數據元素的不可分割的最小單位

1.4 組合項

組合項是由多個數據項或者其他組合項按照一定邏輯關聯組合而成的數據單元,也稱為“組合字段”或“數據組”。

他們的具體關系示例如下圖:

A、B、C為三個數據元素,名字、學號、年齡、數學成績、語文成績和英語成績為數據項,成績為組合項,他由數學成績、語文成績和英語成績三個數據項共同組成。

1.5 數據對象

數據對象是具有相同性質的數據元素的集合,他是數據的一個子集。例如,成績單(數據對象)含有所有學生成績明細(數據元素)。因此我們可以得到:

數據(全集)包含 數據對象(子集,同類數據元素的集合);

數據對象 包含 數據元素(個體,可拆分為數據項)。

1.6 數據類型

數據類型是一個值的集合和定義在此集合上的一組操作的總稱:

這里的值代表類型包含的數據內容

1. 原子類型:其值不可再分的數據類型,如整型int、浮點型float等

2. 結構類型:其值可以再分解為若干成分(分量)的數據類型

3. 抽象數據類型:一個數學模型及定義在該數學模型上的一系列操作。他通過對數據的某種抽象,定義了數據的取值范圍和結構形式,以及對數據操作的集合。可以理解為對實際問題數據關系和操作需求的抽象化描述

原子類型和結構類型側重“是什么”(數據的構成方式),抽象數據類型側重“做什么”(數據的行為能力)

原子類型==“樂高積木塊”,結構類型==“用積木塊組成的組件”,抽象數據類型==“玩具車的功能說明書”

2. 數據結構

數據結構是相互之間存在一種或多種特別關系的數據元素的集合。(可以類比漢字的結構:上下結構,左右結構)在任何問題中,數據元素都不是獨立存在的,他們之間存在某種關系,這種數據元素相互之間的關系稱為結構。

數據結構包括三方面的內容:邏輯結構、存儲結構(物理結構)和數據的運算。

邏輯結構是抽象的關系定義,獨立于具體存儲方式;存儲結構需適配邏輯結構的特性,但最終選擇還受實際應用需求(如操作效率、空間占用)影響?,二者相互制約又共同支撐數據的處理邏輯。

一個算法的設計取決于所選定的邏輯結構,而算法的實現依賴于所采用的存儲結構。?

2.1 邏輯結構

邏輯結構是指數據元素之間的邏輯關系,即從邏輯關系上描述數據。它與數據的存儲無關,是獨立于計算機的。數據的邏輯結構分為線性結構非線性結構,線性表是典型的線性結構;集合、樹和圖是典型的非線性結構。

?如下圖所示:

線性結構? ? ? ? ? ? ? ? ? ? ? ? ? ? 集合? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 樹狀結構? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 網狀結構


?

線性結構:結構中的數據元素之間只存在一對一的關系;

集合:結構中的數據元素除“同屬于一個集合”外,別無其他關系;

樹狀結構:結構中的數據元素之間存在一對多的關系;

網狀結構或圖狀結構:結構中的數據元素之間存在多對多的關系。

2.2 存儲結構

存儲結構是指數據結構在計算機中的表示(又稱映像),也稱物理結構。它包括數據元素的表示和關系的表示(數據元素本身數據元素之間的關系)。數據的存儲結構是用計算機語言實現的邏輯結構,它依賴于計算機語言。數據的存儲結構主要有順序存儲鏈式存儲索引存儲散列存儲

1. 順序存儲:把邏輯上相鄰的元素存儲在物理位置上也相鄰的存儲單元中,元素之間的關系由存儲單元的鄰接關系來體現。其優點是可以實現隨機存取,每個元素占用最少得存儲空間;缺點是只能使用相鄰的一整塊存儲單元,因此可能產生較多的外部碎片;

2.鏈式存儲:不要求邏輯上相鄰的元素在物理位置上也相鄰,借助指示元素存儲地址的指針來表示元素之間的邏輯關系。其優點是不會出現碎片現象,能充分利用所有存儲單元;缺點是每個元素因存儲指針而占用額外的存儲空間,且只能實現順序存取。

3.索引存儲:在存儲元素信息的同時,還建立附加的索引表。索引表中的每項稱為索引項,索引項的一般形式是(關鍵字,地址)。其優點是檢索速度快;缺點是附加的索引表額外占用存儲空間。另外,增加和刪除數據時也要修改索引表,因而會花費較多的時間。

4.散列存儲:根據元素的關鍵字直接計算出該元素的存儲地址,又稱哈希存儲。其優點是檢索、增加和刪除結點的操作都很快;缺點是若散列函數不好,則可能出現元素存儲單元的沖突,而解決沖突會增加時間和空間開銷。

存儲結構中的碎片分為內部碎片外部碎片,內部碎片是指已經分配給程序的內存空間無法被實際使用的“內部空隙”,外部碎片是指未被分配的空閑內存,由于太零散(不連續),無法滿足程序的“連續大內存需求”

2.3 數據的運算

施加在數據上的運算包括運算的定義和實現。運算的定義是針對邏輯結構,指出運算的功能(要進行什么樣的運算);運算的實現是針對存儲結構,指出運算的具體操作步驟(怎么進行計算)。

本章都是一些基礎概念的內容,讀者不必鉆牛角尖,有個大概印象通過做題彌補,有表述不當的地方敬請指正。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94427.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94427.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94427.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是模型并行?

模型并行c 簡單來說,就是把一個模型拆開來放到多個 GPU 上,一起訓練,從而化解“顯存塞不下模型”的問題!更多專業課程內容可以聽取工信部電子標準院《人工智能大模型應用工程師》課程獲得詳解!

跑yolov5的train.py時,ImportError: Failed to initialize: Bad git executable.

遇到的問題&#xff1a; Traceback (most recent call last):File "D:\miniconda\envs\yolov5\lib\site-packages\git\__init__.py", line 296, in <module>refresh()File "D:\miniconda\envs\yolov5\lib\site-packages\git\__init__.py", line 287…

TCP如何實現可靠傳輸?實現細節?

TCP如何實現可靠傳輸&#xff1f;實現細節&#xff1f;如何實現可靠傳輸&#xff1f;擁塞控制的主要機制TCP流量控制怎么實現的&#xff1f;如何實現可靠傳輸&#xff1f; TCP通過自身的序列號、確認應答、數據效驗、超時重傳、流量控制、擁塞避免&#xff0c;確保了數據傳輸的…

Linux 服務器性能監控、分析與優化全指南

Linux 服務器性能監控、分析與優化在現代 IT 架構中&#xff0c;Linux 服務器作為承載業務系統的核心載體&#xff0c;其性能表現直接決定了服務的穩定性、響應速度與用戶體驗。無論是高并發的 Web 服務、數據密集型的數據庫集群&#xff0c;還是承載虛擬化平臺的宿主機&#x…

基于wenet和模型做企業直播敏感語音屏蔽技術

本文介紹了基于Wenet語音識別工具包的實時敏感詞屏蔽技術方案。該方案通過客戶端緩存25秒直播內容&#xff0c;利用Wenet的流式識別和斷句檢測功能&#xff0c;實時檢測講師語音中的敏感詞&#xff0c;并將對應位置的語音替換為"嗶"聲。文章詳細闡述了Wenet的兩種識別…

42.MySQL視圖

1.一個需求emp 表的列信息很多&#xff0c;有些信息是個人重要信息 (比如 sal, comm, mgr, hiredate)&#xff0c;如果我們希望某個用戶只能查詢 emp 表的 (empno、ename, job 和 deptno ) 信息&#xff0c;有什么辦法&#xff1f;表的數據&#xff1a;想讓用戶查詢到的&#x…

MinIO01-入門

零、文章目錄 MinIO01-入門 1、介紹 &#xff08;1&#xff09;介紹 MinIO 是一款基于 Apache License v2.0 的開源對象存儲系統&#xff0c;專為海量非結構化數據&#xff08;如圖片、視頻、日志文件等&#xff09;設計&#xff0c;兼容 Amazon S3 API&#xff0c;支持高性…

*Docker數據卷(Volume)核心機制剖析:持久化與共享的終極解決方案

根本問題當容器被刪除時&#xff0c;其內部產生的所有文件&#xff08;包括配置文件、數據庫、日志&#xff09;都會不可逆丟失。數據卷&#xff08;Volume&#xff09;通過外置存儲方案徹底解決此痛點。一、數據卷與普通容器存儲對比實驗 場景1&#xff1a;無卷模式下的寫入悲…

原型模式在C++中的實現與面向對象設計原則

引言 在軟件開發中&#xff0c;原型模式是一種常用的設計模式&#xff0c;主要用于創建對象的克隆。通過原型模式&#xff0c;我們可以避免復雜的對象創建過程&#xff0c;尤其是當對象的初始化需要大量資源或復雜操作時。本文將通過一個具體的例子&#xff0c;詳細介紹如何在C…

SpringCloud學習------Gateway詳解

在微服務架構中&#xff0c;隨著服務數量的激增&#xff0c;如何統一管理服務入口、實現請求路由、保障服務安全等問題日益突出。SpringCloud Gateway 作為 Spring 官方推出的網關組件&#xff0c;憑借其強大的功Gateway 是 Spring 官方基于 Spring、SpringBoot 和 Project Rea…

計算機網絡:子網掩碼在路由轉發中的關鍵作用

在路由表中,子網掩碼是一個不可或缺的組成部分,其核心作用是精確界定IP地址中“網絡位”和“主機位”的邊界,從而實現路由器對數據包的準確轉發。以下從多個角度詳細解釋其必要性: 1. 區分網絡位與主機位,定位目標網絡 IP地址由“網絡標識”(網絡位)和“主機標識”(主…

14.Home-新鮮好物和人氣推薦實現

新鮮好物實現1.準備模板<script setup>import HomePanel from ./HomePanel.vue</script><template><homePanel></HomePanel><!-- 下面是插槽主體內容模版<ul class"goods-list"><li v-for"item in newList" :ke…

Linux 系統重置用戶密碼指南

Linux 系統重置用戶密碼指南 在 Linux 系統運維中&#xff0c;重置用戶密碼&#xff08;尤其是 root 密碼&#xff09;是一項核心技能。當您忘記密碼時&#xff0c;可以通過進入單用戶模式或恢復模式來修改密碼。此方法適用于大多數 Linux 發行版&#xff0c;如 RHEL/CentOS、D…

[自動化Adapt] GUI交互(窗口/元素) | 系統配置 | 非侵入式定制化

第三章&#xff1a;GUI交互&#xff08;窗口/元素&#xff09; 各位OpenAdapt探索者&#xff0c;歡迎回來~ 在第一章&#xff1a;錄制引擎中&#xff0c;我們揭示了OpenAdapt如何通過"眼睛和耳朵"捕捉所有操作細節。接著在第二章&#xff1a;數據模型中&#xff0c…

Java 模版進階

文章目錄模版通配符模版 通配符 實例 import java.util.ArrayList; import java.util.List;class Message<T> {private T message ;public T getMessage() {return message;}public void setMessage(T message) {this.message message;} } public class test {public …

統計魚兒分布情況 Java

假設有一個池塘&#xff0c;管理員在池塘中添加隨機數量的魚類&#xff0c;為了統計魚類的分布情況&#xff0c;他將池塘劃分為8*8的二維網格&#xff0c;魚兒隨機游動&#xff0c;但是每個網格中最多容納100條魚&#xff0c;要求編寫程序顯示魚兒分布情況&#xff0c;并計算魚…

【HUST】計算機|大學計算機基礎內容(純科普向)+數據結構數組、樹、隊列【舊文搬運】

最初發布時間&#xff1a;2020-09-19 23:17:48 以前寫這篇文章&#xff0c;主要是接觸到一些非計算機學院的同學&#xff0c;為了交流方便我寫下了這篇文章……雖然現在回過頭來看寫得也比較草率&#xff0c;但確實是我對電腦的基礎操作的最早的認識&#xff0c;放到現在我絕對…

CRT調試堆檢測:從原理到實戰的資源泄漏排查指南

在C/C開發中&#xff0c;內存泄漏和資源管理不當是導致程序崩潰、性能下降的常見原因。微軟提供的C運行時庫&#xff08;CRT&#xff09;內置了強大的調試工具&#xff0c;能夠幫助開發者在開發階段及時發現并修復資源泄漏問題。本文將深入解析CRT調試堆的工作原理&#xff0c;…

filezilla出現connected refused的時候排查問題

問題描述: 系統是ubuntu20.04&#xff0c;使用filezilla&#xff0c;兩個主機之間能夠ping通&#xff0c;但是filezilla使用sftp連接的時候顯示的是 FATAL ERROR: Connection refused Could connect to the server應該如何排查問題呢 這是一個非常典型的SFTP連接問題。“Connec…

FPGA 基本設計思想--乒乓操作、串并轉換、流水線

乒乓操作&#xff08;Ping-Pong&#xff09;的理解&#xff1a;為什么是另一種pipeline&#xff1f;-CSDN博客 FPGA菜鳥學習筆記——2、四大設計思想 - 知乎 乒乓操作&#xff08;Ping-Pong&#xff09;-CSDN博客 乒乓操作原理與FPGA設計-CSDN博客 乒乓操作 — [野火]FPGA …