數據結構之----邏輯結構、物理結構

數據結構之----邏輯結構、物理結構

目前我們常見的數據結構分別有:
數組、鏈表、棧、隊列、哈希表、樹、堆、圖
而它們可以從 邏輯結構和物理結構兩個維度進行分類。

什么是邏輯結構?

邏輯結構是指數據元素之間的邏輯關系,而邏輯結構又分為線性結構和非線性結構兩大類。

什么是線性結構?

線性結構比較直觀,指數據在邏輯關系上呈線性排列
如:
在數組和鏈表中,數據按照順序依次排列,體現了數據之間的線性關系。

什么是非線性結構?

非線性結構則與線性結構相反,指數據在邏輯關系上呈非線性排列
如:
在圖中,數據由節點和邊構成,反映了復雜的網絡關系。
而在樹中,數據從頂部向下按層次排列,表現出祖先與后代之間的派生關系。

在這里插入圖片描述

而非線性數據結構又可以進一步被劃分為樹形結構和網狀結構。

  • 線性結構:數組、鏈表、隊列、棧、哈希表。元素之間是一對一的順序關系。
  • 樹形結構:樹、堆、哈希表。元素之間是一對多的關系。
  • 網狀結構:圖。元素之間是多對多的關系。

什么是物理結構?

物理結構指的是數據在計算機內存中的存儲方式,可分為連續空間存儲(數組)和分散空間存儲(鏈表)。
它從底層決定了數據的訪問、更新、增刪等操作方法,同時在時間效率和空間效率方面呈現出互補的特點。
在這里插入圖片描述

我們都知道所有數據結構都是基于數組、鏈表或二者的組合實現的
如:
棧和隊列既可以使用數組實現,也可以使用鏈表實現。
而哈希表的實現可能同時包含數組和鏈表。

  • 基于數組可實現:棧、隊列、哈希表、樹、堆、圖、矩陣、張量(維度 ≥ 3 的數組)等。
  • 基于鏈表可實現:棧、隊列、哈希表、樹、堆、圖等。

基于數組實現的數據結構也被稱為靜態數據結構,這意味著此類數據結構在初始化后長度不可變
相對應地,基于鏈表實現的數據結構被稱為動態數據結構,這類數據結構在初始化后,仍可以在程序運行過程中對其長度進行調整

Q&A

為什么哈希表同時包含線性數據結構和非線性數據結構?

哈希表底層是數組,而為了解決哈希沖突,我們會使用鏈式地址:數組中每個桶指向一個鏈表,當鏈表長度超過一定閾值時,又可能被轉化為樹(通常為紅黑樹)。
從存儲的角度來看,哈希表的底層是數組,其中每一個桶槽位可能包含一個值,也可能包含一個鏈表或樹。因此,哈希表可能同時包含線性(數組、鏈表)和非線性(樹)數據結構。

基于數組實現的數據結構也被稱為“靜態數據結構”是否有歧義?因為棧也可以進行出棧和入棧等操作,這些操作都是“動態”的。

棧確實可以實現動態的數據操作,但數據結構仍然是“靜態”(長度不可變)的。盡管基于數組的數據結構可以動態地添加或刪除元素,但它們的容量是固定的。如果數據量超出了預分配的大小,就需要創建一個新的更大的數組,并將老數組的內容復制到新數組中

在構建棧(隊列)的時候,未指定它的大小,為什么它們是“靜態數據結構”呢?

在高級編程語言中,我們無須人工指定棧(隊列)的初始容量,這個工作是由類內部自動完成的。例如,Java 的 ArrayList 的初始容量通常為 10 。另外,擴容操作也是自動實現的

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

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

相關文章

HCIA-H12-811題目解析(5)

1、【單選題】 以下關于Hybrid端口說法正確的有? 2、【單選題】使用命令"vlan batch 10 20"和"valn batch 10 to 20",分別能創建的vlan數量是?() 3、【單選題】二層ACL的編號范圍是?…

Scala日志log4j,序列化Gson

一、日志輸出log4j 1. Scala中配置log4j依賴 對于 Maven 項目,可以在 pom.xml 文件中添加以下內容: <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version> </dependency>2.創建…

VueUse工具庫

VueUse VueUse不是Vue.use&#xff0c;它是為Vue 2和3服務的一套Vue Composition API的常用工具集&#xff0c;是目前世界上Star最高的同類型庫之一。它的初衷就是將一切原本并不支持響應式的JS API變得支持響應式&#xff0c;省去程序員自己寫相關代碼。 VueUse 是一個基于 …

Java畢業設計 SSM SpringBoot 在線學習系統

Java畢業設計 SSM SpringBoot 在線學習系統 SSM SpringBoot 在線學習系統 功能介紹 首頁 圖片輪播 視頻推薦 在線學習 學習介紹 評論 收藏 資料中心 資料詳情 下載資料 話題討論 文檔發布 試題中心 系統公告 登錄 注冊學生 個人中心 試題記錄 錯題本 我的收藏 算法演示 結果分…

C語言 害死人不償命的(3n+1)算法 挖掘機技術哪家強 選擇排序 貪心算法

1.害死人不償命的&#xff08;3n1)算法 卡拉茲( Calatz)猜想: 對任何一個自然數n,如果它是偶數,那么把它砍掉一半;如果它是奇數,那么把(3n1)砍掉一半。這樣一直反復砍下去,最后一定在某一步得到n1。卡拉茲在1950年的世界數學家大會上公布了這個猜想,傳說當時耶魯大學師生齊動員…

持續集成交付CICD:Jenkins使用GitLab共享庫實現前后端項目Sonarqube

目錄 一、實驗 1.Jenkins使用GitLab共享庫實現后端項目Sonarqube 2.優化GitLab共享庫 3.Jenkins使用GitLab共享庫實現前端項目Sonarqube 4.Jenkins通過插件方式進行優化 二、問題 1.sonar-scanner 未找到命令 2.npm 未找到命令 一、實驗 1.Jenkins使用GitLab共享庫實現…

Vue學習筆記-Vue3中ref和reactive函數的使用

前言 為了讓vue3中的數據變成響應式&#xff0c;需要使用ref,reactive函數 ref函數使用方式 導入ref函數 import {ref} from vue在setup函數中&#xff0c;將需要響應式的數據通過ref函數進行包裝&#xff0c;修改響應式數據時&#xff0c;需要通過: ref包裝的響應式對象.val…

Flink之遲到的數據

遲到數據的處理 推遲水位線推進: WatermarkStrategy.<Event>forBoundedOutOfOrderness(Duration.ofSeconds(2))設置窗口延遲關閉&#xff1a;.allowedLateness(Time.seconds(3))使用側流接收遲到的數據: .sideOutputLateData(lateData) public class Flink12_LateDataC…

力扣編程題算法初階之雙指針算法+代碼分析

目錄 第一題&#xff1a;復寫零 第二題&#xff1a;快樂數&#xff1a; 第三題&#xff1a;盛水最多的容器 第四題&#xff1a;有效三角形的個數 第一題&#xff1a;復寫零 力扣&#xff08;LeetCode&#xff09;官網 - 全球極客摯愛的技術成長平臺 思路&#xff1a; 上期…

【SpringBoot教程】SpringBoot 統一異常處理(附核心工具類-ErrorInfoBuilder)

作者簡介&#xff1a;大家好&#xff0c;我是擼代碼的羊駝&#xff0c;前阿里巴巴架構師&#xff0c;現某互聯網公司CTO 聯系v&#xff1a;sulny_ann&#xff08;17362204968&#xff09;&#xff0c;加我進群&#xff0c;大家一起學習&#xff0c;一起進步&#xff0c;一起對抗…

曲線分板機主軸有何特點?如何選擇合適的曲線分板機主軸?

在現代工業領域&#xff0c;分板機主軸作為重要的機械部件&#xff0c;其性能和質量對于生產效率和產品質量具有至關重要的影響。而在這其中&#xff0c;曲線分板機主軸則因為其獨特的優勢而被廣泛應用于PCB電路板的切割和分板。面對市場上眾多的曲線分板機主軸品牌&#xff0c…

【深度學習】loss與梯度與交叉熵的關系

問的GPT3.5 模型訓練時loss與梯度的關系&#xff1f; 在深度學習模型訓練過程中&#xff0c;loss&#xff08;損失函數&#xff09;與梯度&#xff08;gradient&#xff09;之間存在密切關系。損失函數衡量模型在給定輸入上的預測輸出與實際輸出之間的差距&#xff0c;而梯度則…

Leetcode 2958. Length of Longest Subarray With at Most K Frequency

Leetcode 2958. Length of Longest Subarray With at Most K Frequency 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;2958. Length of Longest Subarray With at Most K Frequency 1. 解題思路 這一題思路上其實也很簡單&#xff0c;就是一個滑動窗口的思路&#xff0c;遍歷…

前端知識(十三)——JavaScript監聽按鍵,禁止F12,禁止右鍵,禁止保存網頁【Ctrl+s】等操作

禁止右鍵 document.oncontextmenu new Function("event.returnValuefalse;") //禁用右鍵禁止按鍵 // 監聽按鍵 document.onkeydown function () {// f12if (window.event && window.event.keyCode 123) {alert("F12被禁用");event.keyCode 0…

RNN循環神經網絡python實現

import collections import math import re import random import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2ldef read_txt():# 讀取文本數據with open(./A Study in Drowning.txt, r, encodingutf-8) as f:# 讀取每一行l…

軟件測試之缺陷管理

一、軟件缺陷的基本概念 1、軟件缺陷的基本概念主要分為&#xff1a;缺陷、故障、失效這三種。 &#xff08;1&#xff09;缺陷&#xff08;defect&#xff09;&#xff1a;存在于軟件之中的偏差&#xff0c;可被激活&#xff0c;以靜態的形式存在于軟件內部&#xff0c;相當…

【隱馬爾可夫模型】隱馬爾可夫模型的觀測序列概率計算算法及例題詳解

【隱馬爾可夫模型】用前向算法計算觀測序列概率P&#xff08;O&#xff5c;λ&#xff09;??????? 【隱馬爾可夫模型】用后向算法計算觀測序列概率P&#xff08;O&#xff5c;λ&#xff09; 隱馬爾可夫模型是關于時序的概率模型&#xff0c;描述由一個隱藏的馬爾可夫鏈…

Elbie勒索病毒:最新變種.elbie襲擊了您的計算機?

引言&#xff1a; 在數字時代&#xff0c;.Elbie勒索病毒的威脅越發突出&#xff0c;對個人和組織的數據安全構成了巨大挑戰。本文將深入介紹.Elbie勒索病毒的特征&#xff0c;有效的數據恢復方法&#xff0c;以及一系列預防措施&#xff0c;幫助您更好地保護數字資產。當面對…

線性規劃-單純形法推導

這里寫目錄標題 線性規劃例子啤酒廠問題圖解法 單純形法數學推導將問題標準化并轉為矩陣形式開始推導 實例圖解法單純形法 線性規劃例子 啤酒廠問題 每日銷售上限&#xff1a;100箱啤酒營業時間&#xff1a;14小時生產1箱生啤需1小時生產1箱黑啤需2小時生啤售價&#xff1a;2…

從零開發短視頻電商 AWS OpenSearch Service開發環境申請以及Java客戶端介紹

文章目錄 創建域1.創建域2.輸入配置部署選項數據節點網絡精細訪問控制訪問策略 獲取域端點數據如何插入到OpenSearch ServiceJava連接OpenSearch Servicespring-data-opensearchelasticsearch-rest-high-level-clientopensearch-rest-clientopensearch-java 因為是開發測試使用…