初階數據結構速成

本篇文章算是對初階數據結構的總結,內容較多,請耐心觀看

基礎概念部分

順序表

線性表( linear list )是n個具有相同特性的數據元素的有限序列。 線性表是?種在實際中?泛使
?的數據結構,常?的線性表:順序表、鏈表、棧、隊列、字符串...
順序表的底層結構 是數組,對數組的封裝,實現了常?的增刪改查等接?

鏈表

概念:鏈表是?種物理存儲結構上?連續、?順序的存儲結構,數據元素的邏輯順序是通過鏈表
中的指針鏈接次序實現的 。

棧和隊列

概念:進行數據 插入和刪除 操作的一端 稱為棧頂,另一端稱為棧底。

特點

1. 輸入和輸出都在同一端
2. 先進后出

隊列

概念:只允許在一端進行插入數據操作,在另一端進行刪除數據操作的特殊線性表,隊列具有先進先出
FIFO(First In First Out) 入隊列:進行插入操作的一端稱為 隊尾 出隊列:進行刪除操作的一端稱為 隊頭

特點

先進先出

樹是一種 非線性 的數據結構,它是由 n n>=0 )個有限結點組成一個具有層次關系的集合

這兩個圖只是方便大家理解的。

堆?

根結點最大 的堆叫做最 大堆 或大根堆,根 結點最小的堆 叫做最 小堆 或小根堆。

二叉樹

幾個重要概念

1. 滿二叉樹:一個二叉樹的層數為K,且結點總數是2的k次 - 1,則它就是滿二叉樹。

2. 完全二叉樹:當且僅當其每一個結點都與深度為K的滿二叉樹中編號從1n的結點一一對應時稱之為完全二叉樹

3.結點的度:?結點含有的子樹的個數

4. 結點的層次: 從根節點開始數

二叉樹的特性
1. 若規定根結點的層數為 1 ,則一棵非空二叉樹的 i 層上最多有
個結點 .
2. 若規定根結點的層數為 1 ,則 深度為 h 的二叉樹的最大結點數是
.
3. 對任何一棵二叉樹 , 如果度為 0 其葉結點個數為 , 度為 2 的分支結點個數為 , 則有 = + 1

實操部分

顧名思義,數據結構是又有數據又有結構體因此初階數據結構的每一部分內容的結構體給大家放在下方

各種初階數據結構的結構體部分

順序表

結構體內的元素:數組、有效的元素個數、空間大小

鏈表

結構體內的元素: 數、指向下一個節點的next指針

隊列

初始化以及銷毀的思路部分

這里呢我也是找了以前寫過的文章,給大家串一串這個部分該怎么寫代碼

初始化部分

將結構體內的元素進行初始化,eg. 結構體內的數組、指針之類的置為空,剩余的如空間、計數器等整型變量置為0即可,注意初始化前必須聲明結構體不為空

銷毀部分

先聲明結構體以及需要釋放的不為空,然后還原回與初始化相同即可。

當然這里的銷毀具體情況還需要具體分析,如鏈表就是需要具體情況具體分析

插入部分

插入的前置條件

這個部分則是判斷空間是否充足,那么這里的邏輯我就不繼續講解了,相信學到這里的小伙伴都是可以靠自己看懂這個代碼的,當然啦如果又不懂的小伙伴可以評論區留言

插入數據

在空間充足的情況下 通過賦值的方式將數據插入,同時別忘了有效數字個數要加一哦。

當然除了上面那種寫法外也可以寫成:ps->arr[ps->size++] = x;

刪除部分

首先需要聲明你所要刪除的結構體、有效長度、指針等等不為空,通過覆蓋、釋放函數等手段對其進行刪除,有有效長度的需要減一,如果是指針,則需要釋放并置空后,在指向下一個節點。

查找部分

這個部分先前是沒怎么講解過,那么我們先來看下實現這個函數,它的新參有哪些

從圖中我們可以看出需要的有結構體和需要查找的參數,那么只需要遍歷即可(如遍歷數組,遍歷鏈表等等)。當找到與我們所要尋找的參數數值相同時,即可返回(該結點等等)即可

以上這些僅僅是思路,如果你是屬于那種沒有思路,那么這篇文章就很適合你,此外光有這些還不夠,最主要的就是畫圖,需要根據要求進行畫圖分析,然后將圖解轉換成代碼

那么初階數據結構系列的文章正式完結

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

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

相關文章

C語言 錯題本

C語言 錯題本 文章目錄 C語言 錯題本77月11號整數求逆--掌握 7月12號求符合給定條件的整數集水仙花數打印九九口訣表--掌握統計素數并求和--掌握 7月13號湊硬幣前n項和(一加一減)最大公約數 7月14號正序整數分解 7月17號簡單計算器 217月26號求符合給定條件的整數集水仙花數 旨…

【安全設備】上網行為管理

一、什么是上網行為管理 上網行為管理是對企業內部員工使用互聯網行為的監視和管理,旨在規范網絡使用者的上網行為,提高網絡安全性,保護企業信息安全,同時提高員工的工作效率。上網行為管理通過對員工的上網行為進行監控、記錄和…

機器學習——關于極大似然估計法的一些個人思考(通俗易懂極簡版)

最近在回顧機器學習的一些相關理論知識,回顧到極大似然法時,對于極大似然法中的一些公式有些迷糊了,所以本文主要想記錄并分享一下個人關于極大似然估計法的一些思考,如果有誤,請見諒,歡迎一起前來探討。當…

單元測試實施最佳方案(背景、實施、覆蓋率統計)

1. 什么是單元測試? 對于很多開發人員來說,單元測試一定不陌生 單元測試是白盒測試的一種形式,它的目標是測試軟件的最小單元——函數、方法或類。單元測試的主要目的是驗證代碼的正確性,以確保每個單元按照預期執行。單元測試通…

合肥高校大學智能制造實驗室數字孿生可視化系統平臺建設項目驗收

合肥高校大學智能制造實驗室近日迎來了一項重要時刻,數字孿生可視化系統平臺建設項目順利通過了驗收。這一項目的成功實施,不僅標志著合肥高校在智能制造領域取得新的突破,為我國智能制造技術的發展注入新活力。 合肥高校智能制造實驗室作為…

T972 切換至pdm 聲音輸入的方法

1.在hardware/amlogic/audio/audio_hal/audio_hw.c下,直接切換 在 static unsigned int select_port_by_device(struct aml_audio_device *adev) 中先強制切換為pdm 2.在device mk 配置文件中 #add fof fix the mic bug by jason 20230621 PRODUCT_PROPERTY_OVE…

MySQL 數據庫基礎概念

一、什么是數據庫? 數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。 每個數據庫都有一個或多個不同的 API 用于創建,訪問,管理,搜索和復制所保存的數據。 我們也可以將數據存儲在文件中&…

淺析Kafka Streams中KTable.aggregate()方法的使用

KTable.aggregate() 方法是 Apache Kafka Streams API 中用于對流數據進行狀態化聚合的核心方法之一。這個方法允許你根據一個鍵值&#xff08;通常是<K,V>類型&#xff09;的流數據&#xff0c;應用一個初始值和一個聚合函數&#xff0c;來累積和更新一個狀態&#xff0…

MSPM0G3507(三十六)——超聲波PID控制小車固定距離

效果圖&#xff1a; 波形圖軟件是VOFA&#xff0c;B站有教程 &#xff0c;雖然有缺點但是非常簡單。 視頻效果&#xff1a; PID控制距離 之前發過只有超聲波測距的代碼&#xff0c;MSPM0G3507&#xff08;三十二&#xff09;——超聲波模塊移植代碼-CSDN博客 SYSCFG配置&#…

Ubuntu下如何設置程序include搜索路徑及鏈接路徑

添加庫的include及lib路徑 linux下系統默認路徑為 /usr/include, /usr/local/include, gcc在編譯程序時會按照當前目錄路徑->系統默認路徑->系統環境變量的路徑方式去查找&#xff0c;所以當我們想調用的庫未安裝在系統默認路徑時&#xff0c;我們可以通過手動添加環境變…

數據壓縮的藝術:Kylin Cube設計中的自動壓縮特性

數據壓縮的藝術&#xff1a;Kylin Cube設計中的自動壓縮特性 在大數據的浩瀚宇宙中&#xff0c;Apache Kylin以其卓越的數據立方體&#xff08;Cube&#xff09;技術&#xff0c;為企業提供快速的多維數據分析能力。隨著數據量的不斷增長&#xff0c;存儲效率成為了一個關鍵問…

用友NC Cloud blobRefClassSearch FastJson反序列化RCE漏洞復現

0x01 產品簡介 用友 NC Cloud 是一種商業級的企業資源規劃云平臺,為企業提供全面的管理解決方案,包括財務管理、采購管理、銷售管理、人力資源管理等功能,實現企業的數字化轉型和業務流程優化。 0x02 漏洞概述 用友 NC Cloud blobRefClassSearch 接口處存在FastJson反序列…

開源PHP論壇HadSky本地部署與配置公網地址實現遠程訪問

文章目錄 前言1. 網站搭建1.1 網頁下載和安裝1.2 網頁測試1.3 cpolar的安裝和注冊 2. 本地網頁發布2.1 Cpolar臨時數據隧道2.2 Cpolar穩定隧道&#xff08;云端設置&#xff09;2.3 Cpolar穩定隧道&#xff08;本地設置&#xff09;2.4 公網訪問測試 總結 前言 今天和大家分享…

idea啟動ssm項目詳細教程

前言 今天碰到一個ssm的上古項目&#xff0c;項目沒有使用內置的tomcat作為服務器容器&#xff0c;這個時候就需要自己單獨設置tomcat容器。這讓我想起了我剛入行時被外置tomcat配置支配的恐懼。現在我打算記錄一下配置的過程&#xff0c;希望對后面的小伙伴有所幫助吧。 要求…

什么是計算機數據結構的字典

字典數據結構在計算機編程領域中是一個非常重要且常用的數據結構。它也被稱為關聯數組、哈希表或映射&#xff08;Map&#xff09;&#xff0c;在不同編程語言中有不同的實現和稱呼&#xff0c;但其核心概念和用途大致相同。 字典數據結構是一種鍵值對&#xff08;key-value p…

Linux 軟件工具安裝

Linux 軟件包管理器 yum 什么是軟件包 在Linux下安裝軟件&#xff0c; 一個通常的辦法是下載到程序的源代碼&#xff0c; 并進行編譯&#xff0c;得到可執行程序。 但是這樣太麻煩了&#xff0c; 于是有些人把一些常用的軟件提前編譯好&#xff0c;做成軟件包(可以理解成wind…

動態路由的基本概念

動態路由的基本概念 什么是動態路由&#xff1f; 網絡中的路由器彼此之間相互通信&#xff0c;傳遞各自的路由信息&#xff0c;利用收到的路由信息來更新和維護自己的路由表的過程。 基于某種路由協議實現&#xff08;6大協議&#xff09;。 動態路由的特點&#xff1a; 減…

SpringBoot3.3.0升級方案

本文介紹了由SpringBoot2升級到SpringBoot3.3.0升級方案&#xff0c;新版本的升級可以解決舊版本存在的部分漏洞問題。 一、jdk17下載安裝 1、下載 官網下載地址 Java Archive Downloads - Java SE 17 Jdk17下載后&#xff0c;可不設置系統變量java_home&#xff0c;僅在id…

開發技術-Java BigDecimal 精度丟失問題

文章目錄 1. 背景2. 方法3. 總結 1. 背景 昨天和小伙伴排查一個問題時&#xff0c;發現一個 BigDecimal 精度丟失的問題&#xff0c;即 double a 1.1;BigDecimal ba new BigDecimal(a).subtract(new BigDecimal(0.1));System.out.println(ba);輸出&#xff1a; 1.000000000…

構建自定義Tensorflow鏡像時用到的鏈接地址整理

NVIDIA相關&#xff1a; NVIDIA CUDA鏡像的docker hub&#xff1a;https://hub.docker.com/r/nvidia/cuda/tags?page&page_size&ordering&name12.4.1NVIDIA 構建的Tensorflow鏡像包&#xff1a;https://docs.nvidia.com/deeplearning/frameworks/tensorflow-rele…