數據結構基礎介紹

一.起源及重要性

1968 年,美國的高德納 Donakl E . Kn uth 教授在其所寫的《 計算機程序藝術》第一卷《基本算法 》 中,較系統地闡述了數據的邏輯結構和存儲結構及其操作, 開創了數據結構的課程體系 ,數據結構作為一門獨立的課程,也在計算機科學的學位課程中開始出現。
重要性:
結構程序設計成為程序設計方法學的主要內容,人們越來越重視"數據結構氣認為程序設計的實質是對確定的問題選擇一種好的結構,加上設計 種好的算法。可見,數據結構在程序設計當中占據了重要的地位。

二.基本概念和術語

所謂數據結構,就是數據和結構
下面我們先來介紹數據的相關概念
數據的定義:
描述客觀事物的符號,是計算機中可以操作的對象,是能被計算機識 別,并輸入給計算機處理的符號集合 數據不僅僅包括整型、實型等數值類型,還包括字符及聲音、圖像、視頻等非數值類型。
所謂計算機數據,就是符號,有以下兩個要求:
1.可以輸入到計算機中
2.能被計算機程序處理
數據元素
是組成數據的、有一 定意義的基本單位,在計 算 機中通常作為整 體處理,也被稱為記錄。
數據項:
一個數據元素可以自若干個數據項組成。例如:人是一個數據元素,那么人的身高,體重等都是數據項。
數據項是數據不可分割的最小單位 。在數據結構這門課程中,我們把數據項定義為最小單位,是有助于我們更好地解決問題。所以,記住了,數據項是數據的最小單位。但真正討論問題時,數據元素才是數據結構中建立數據模型的著眼點。就像我們 討論一 部電影時,是討論這部電影角色這樣的"數據元素",而不是針對這個角色的姓名或者年齡這樣的"數據項"去研究分析。
接下來我們再分析結構這個概念:
結構,簡單理解就是關系的意思,結構是指各個組成部分相互搭配和排列的方式,在現實世界中,不同數據元素之不是獨立的,而是存在特定的關系,我們將這些關系稱為結構,那數據結構是什么?
數據結梅:是相互之間存在-種或多種特定關系的數據元素的集舍。
在計算機中,數據元素并不是孤立、雜亂無序的,而是具有內在聯系的數據集合。數據元素之間存在的一種或多種特定關系,也就是數據的組織形式 而數據結構就是分析待處理對象的特性及各處理對象之間存在關系

三.數據結構的結構分類

3.1.邏輯結

邏輯結構:是指數據對象中數據元素之間的相互關系
主要分為以下四類:

1.集合結構

定義:

集合結構中的數據元素 同屬于一 個集合外,它們之間 沒有其他關系。 各個數據元素是"平等'的,它們的共同屬性是"同屬于一個集合"。數據結構中 的集合關系就類似數學中的集合。

2.線性結構

定義:線性結構之間元素是一一對應的。

3.樹形結構

定義: 樹形結構中的數據元素之間存在一對多的層次關系

4.圖形結構

定義: 圖形結構的數據元素是多對多的關系
示意圖表示數據的邏輯結構時,要注意兩點:
將每一個數據元素看做一 ,用圈圈表 示。
元素之闖的邏輯關系用結點之間的連線表示.如果這個關系是有方向的,那么用帶箭頭的連續表

3.2.物理結構

又叫存儲結構

定義:物理結構是指數據的邏輯結構在計算機中的存儲形

數據元素的存儲結構形式有兩種:順序存儲和鏈式存儲。

1.順序存儲結構

定義:數據元素存放在地址連續的存儲單元里,其數據間的邏輯關系和物理關系是一致的

2.鏈式存儲結構

定義:鏈式存儲結構是把數據元素存放在任意的存儲單元里,這組存儲單元可以是連 續的,也可以是不連續的 數據元素的存儲關系并不能反映其邏輯關系,因此需要用一個指針存放數據元素的地址,這樣通過地址就可以找到相關聯數據元素的位置。

3.3邏輯結構與物理結構對比

邏輯結構是針對具體問題的,是為了解決某個問題, 在對問題理解的基礎上,選擇一個合適的數據結構表示數據元素之間的邏輯關系。
邏輯結構是面向問題的,而物理結構就是面向計算機的,其基本的目標就是將數 據及其邏輯關系 儲到計算機的內存中
數據的存儲結構應正確反映數據元素之間的邏輯關系,這才是最為關鍵的,如何儲數據元素之間的邏輯關系,是實現物理結構的重點和難點。
最后,本文借鑒了《大話數據結構》這本書,里面的內容對于小白理解數據結構概念性的東西非常好,希望大家可以自行閱讀,加深對數據結構理解。

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

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

相關文章

B029-JDBC增強

目錄 PreparedStatement 查詢1.sql注入2.Statement分析 (面試題)3.PreparedStatement (面試題) 登錄功能的完善事務鏈接池概念實現DBCP連接池實現第一種配置方式第二種配置方式 返回主鍵BaseDao的抽取 PreparedStatement 查詢 1.sql注入 就是在sql的字符串拼接的時候&#xf…

基于單片機的定時插座在智能家居中的應用

近年來,隨著科學技術的發展迅速,人們對智能化的要求越來越高。越來越多的智能化產品進入千家萬戶,如電腦電視、掃地機器人、智能空氣凈化器等。這些家居電器和電子產品大都需要連接電源,為滿足多種用電器的正常使用,延…

DevEco Studio 生成HPK文件

DevEco Studio 生成HPK文件 一、安裝環境 操作系統: Windows 10 專業版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、生成HPK文件 生成的HPK文件存放在entry文件夾下。下圖是未生成HPK的樣式。 生成HPK:菜單Build->Build Hap(s)/APP(s)->Build Hap(s)…

啟動jar包命令

一、Windows環境 找到jar包的位置; 按shift鍵,點擊鼠標右鍵,選中在此處打開PowerShell窗口; 此時進入命令行工具 輸入java -jar .\java_web-0.0.1-SNAPSHOT.jar(注意空格)。 二、Linux環境 2.1 方式一 …

039.Python面向對象_三大特性綜合案例2

我 的 個 人 主 頁:👉👉 失心瘋的個人主頁 👈👈 入 門 教 程 推 薦 :👉👉 Python零基礎入門教程合集 👈👈 虛 擬 環 境 搭 建 :👉&…

一、微前端目標、前端架構的前生今世、微前端架構優勢和劣勢、軟件設計原則與分層

1、目標 2、前端架構的前世今生 ① 初始:無架構,前端代碼內嵌到后端應用中 ② 后端 MVC 架構:將視圖層、數據層、控制層做分離 缺點:重度依賴開發環境,代碼混淆嚴重(在調試時,需要啟動后端所有…

小型洗衣機哪個牌子質量好?迷你洗衣機排名前十名

隨著內衣洗衣機的流行,很多小伙伴在糾結該不該入手一款內衣洗衣機,專門來洗一些貼身衣物,答案是非常有必要的,因為我們現在市面上的大型洗衣機只能做清潔,無法對我們的貼身衣物進行一個高強度的清潔,而小小…

【CCF BDCI 2023】多模態多方對話場景下的發言人識別 Baseline 0.71 NLP 部分

【CCF BDCI 2023】多模態多方對話場景下的發言人識別 Baseline 0.71 NLP 部分 概述NLP 簡介文本處理詞嵌入上下文理解 文本數據加載to_device 函數構造數據加載樣本數量 len獲取樣本 getitem 分詞構造函數調用函數輪次嵌入 RobertaRoberta 創新點NSP (Next Sentence Prediction…

23種設計模式之裝飾者模式(被裝飾者,接口層,裝飾抽象層,具體裝飾者)

23種設計模式之裝飾者模式 文章目錄 23種設計模式之裝飾者模式設計思想裝飾者模式的優點裝飾者模式的缺點裝飾者模式的優化方法UML 解析預設場景 代碼釋義總結 設計思想 原文:裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能&#xff0…

應用在LED燈光控制觸摸屏中的觸摸芯片

LED燈光控制觸摸屏方法,包括:建立觸摸屏的觸摸軌跡信息與LED燈光驅動程序的映射關系;檢測用戶施加在觸摸屏上的觸摸軌跡,生成觸摸軌跡信息;根據生成的觸摸軌跡信息,調用對應的LED燈光驅動程序,控…

HJ14 字符串排序

一、題目 描述 給定 n 個字符串,請對 n 個字符串按照字典序排列。數據范圍: 1 \le n \le 1000 \1≤n≤1000 ,字符串長度滿足 1 \le len \le 100 \1≤len≤100 輸入描述: 輸入第一行為一個正整數n(1≤n≤1000),下面n行為n個字符…

智能優化算法應用:基于頭腦風暴算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用:基于頭腦風暴算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用:基于頭腦風暴算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.頭腦風暴算法4.實驗參數設定5.算法結果6.…

說說React中的虛擬dom?在虛擬dom計算的時候diff和key之間有什么關系?

虛擬 DOM(Virtual DOM)是 React 中的一種機制,通過在內存中構建一棵輕量級的虛擬 DOM 樹來代替操作瀏覽器 DOM,從而提高組件的渲染性能和用戶體驗。 在 React 中,當組件的 Props 或 State 發生變化時,Reac…

智能優化算法應用:基于蝙蝠算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用:基于蝙蝠算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用:基于蝙蝠算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.蝙蝠算法4.實驗參數設定5.算法結果6.參考文獻7.MA…

酷開科技多維度賦能營銷,實力斬獲三項大獎

在數智化新階段、廣告新生態、傳播新業態的背景下,“第30屆中國國際廣告節廣告主盛典暨網易傳媒態度營銷峰會”于11月18日在廈門國際會展中心盛大舉行。來自全國的品牌方、戰略決策者、媒體平臺和品牌服務機構等匯聚一堂。在50000+現場觀眾和數千萬線上觀…

openssl的x509命令工具

X509命令是一個多用途的證書工具。它可以顯示證書信息、轉換證書格式、簽名證書請求以及改變證書的信任設置等。 用法: openssl x509 [-inform DER|PEM|NET] [-outform DER|PEM|NET] [-keyform DER|PEM] [-CAform DER|PEM] [-CAkeyform DER|PEM] [-in filename…

vue elementui點擊按鈕新增輸入框(點多少次就新增多少個輸入框,無限新增)

效果如圖&#xff1a; 核心代碼&#xff1a; <div v-for"(item,index) in arrayData" :key"item.id">//上面這個是關鍵代碼&#xff0c;所有思路靠這個打通<el-inputtype"input" //除了輸入框&#xff0c;還有textarea等placeholder&…

SequentialChain

以下是使用SequentialChain創建Java代碼的單元測試代碼的示例&#xff1a; import sequentialchain.SequentialChain; import static org.junit.Assert.assertEquals; import org.junit.Test;public class SequentialChainTest {Testpublic void testAdd() {SequentialChain&l…

k8s詳細教程(一)

—————————————————————————————————————————————— 博主介紹&#xff1a;Java領域優質創作者,博客之星城市賽道TOP20、專注于前端流行技術框架、Java后端技術領域、項目實戰運維以及GIS地理信息領域。 &#x1f345;文末獲取源碼…

《Spring Cloud Alibaba 從入門到實戰》分布式消息(事件)驅動

分布式消息&#xff08;事件&#xff09;驅動 1、簡介 事件驅動架構(Event-driven 架構&#xff0c;簡稱 EDA)是軟件設計領域內的一套程序設計模型。 這套模型的意義是所有的操作通過事件的發送/接收來完成。 傳統軟件設計 舉個例子&#xff0c;比如一個訂單的創建在傳統軟…