從數據結構說起(一)

1 揭開數據結構神奇的面紗

1.1 初識數據結構

? ? 在C++的標準庫模板(Standard Template Library,STL)課程上,我初次結識了《數據結構》。C++語言提供的標準庫模板是面向對象程序設計與泛型程序設計思想相結合的典范。所謂的泛型編程就是編寫不依賴于具體數據類型的程序。

????STL容器的底層實現依賴于數據結構。向量(vector)是一種順序容器,可視為一種動態數組。集合(set)和映射(map)的底層是用紅黑樹(Red Black Tree)實現的。無序集合(unordered set)和無序映射(unordered map)的底層是哈希表(hash table)實現的。從上面的分析可以看出,STL容器的實現依賴了大量的數據結構。

? ? 作為面向對象程序設計的經典,C++的標準庫模板封裝了大量的數據結構。數據結構知識的匱乏可能會導致STL理解的困難。筆者認為,在學習STL這一部分的內容之前,讀者應該對數據結構有一個基本的認識。


1.2 數據結構的學習

? ? 在搜索引擎上搜索“如何學習數據結構”,網友不是給你推薦五花八門的書籍,就是給你推薦各種刷題技巧。對于一個初學者來說,最重要的是掌握數據結構的基本原理。如若拘泥于各種繁雜是數學推導,那么你在學習了幾節之后變會覺得索然無味,書籍也自然而然地束之高閣了。

? ? 對于初學者,筆者比較推薦通過網絡視頻來學習。筆者比較推薦電子科技大學戴波老師的數據結構與算法慕課課程,該課程講解深入淺出,并且給出了大量的實現代碼。想了解更多數據結構知識,推薦讀者閱讀數據結構與算法教程。

? ? 在學習完成基礎課程之后,讀者可以在解鎖leetcode刷題網站,強烈建議讀者從探索板塊的數據結構專欄開始刷題。通過大量的聯系,我相信讀者對數據結構的理解一定會更加深入,編程能力亦能極大地提高。

1.3 數據結構知識體系

? ? 數據結構是帶有結構的數據原始的集合。數據結構有兩大用途:(1)用于存放要處理的數據;(2)用于實現的算法策略。數據結構可由一個四元組組成:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??DataStructuue=(D,L,S,O)

????上式表示數據結構由數據原始、數據原始之間的邏輯關系、邏輯關系在計算機中的存儲表示及所規定的操作組成。

????按照邏輯結構,數據結構可以分為線性結構、樹形結構、圖形結構和結合結構等。下圖為邏輯結構分類示意圖。

邏輯結構分類示意圖

????按照存儲結構,數據結構可分為順序存儲、鏈式存儲和哈希存儲等。順序存儲結構:把邏輯上相鄰的元素存儲在物理位置相鄰的存儲單元中。鏈式存儲結構:在數據元素中添加一些地址或輔助結構,用于存儲數據原始之間的關系。下圖反映了數據的邏輯結構和存儲結構之間的聯系。


邏輯結構和存儲結構之間的聯系

????????數據結構的操作,主要包括查找、插入、刪除、遍歷和排序等。

數據結構知識網絡


喜歡的朋友記得點贊、收藏、關注哦!!!

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

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

相關文章

JAVA--- 關鍵字static

之前我們學習了JAVA 面向對象的一些基本知識,今天來進階一下!!! static關鍵字 static表示靜態,是JAVA中的一個修飾符,可以修飾成員方法,成員變量,可用于修飾類的成員(變…

4.27比賽總結

文章目錄 T1T2法一:倍增求 LCA法二:Dijkstra 求最短路法三:dfs 求深度 T3T4總結 T1 一道非常簡單的題,結果我因為一句話沒寫掛了 80pts…… 題目中沒寫 a a a 數組要按照 b b b 數組的順序,所以對于最大方案&#x…

數據一致性巡檢總結:基于分桶采樣的設計與實現

數據一致性巡檢總結:基于分桶采樣的設計與實現 背景 在分布式系統中,緩存(如 Redis)與數據庫(如 MySQL)之間的數據一致性問題是一個常見的挑戰。由于緩存的引入,數據在緩存和數據庫之間可能存…

SpringBoot與Druid整合,實現主從數據庫同步

通過引入主從數據庫同步系統,可以顯著提升平臺的性能和穩定性,同時保證數據的一致性和安全性。Druid連接池也提供了強大的監控和安全防護功能,使得整個系統更加健壯和可靠。 我們為什么選擇Druid? 高效的連接管理:Dru…

在Linux系統中安裝MySQL,二進制包版

1、檢查是否已安裝數據庫(rpm軟件包管理器) rpm -qa | grep mysql rpm -qa | grep mariadb #centOS7自帶mariadb與mysql數據庫沖突2、刪除已有數據庫 rpm -e –nodeps 軟件名稱 3、官網下載MySQL包 4、上傳 # 使用FinalShell或Xshell工具上傳&#…

【含文檔+PPT+源碼】基于SpringBoot電腦DIY裝機教程網站的設計與實現

項目介紹 本課程演示的是一款 基于SpringBoot電腦DIY裝機教程網站的設計與實現,主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含:項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本套…

Spring Boot 緩存機制:從原理到實踐

文章目錄 一、引言二、Spring Boot 緩存機制原理2.1 緩存抽象層2.2 緩存注解2.3 緩存管理器 三、入門使用3.1 引入依賴3.2 配置緩存3.3 啟用緩存3.4 使用緩存注解3.5 實體類 四、踩坑記錄4.1 緩存鍵生成問題4.2 緩存過期與更新問題4.3 事務與緩存的一致性問題 五、心得體會5.1 …

Spark讀取Apollo配置

--conf spark.driver.extraJavaOptions-Dapp.idapollo的app.id -Denvfat -Dapollo.clusterfat -Dfat_metaapollo的meta地址 --conf spark.executor.extraJavaOptions-Dapp.idapollo的app.id -Denvfat -Dapollo.clusterfat -Dfat_metaapollo的meta地址 在spark的提交命令中&…

[逆向工程]如何理解小端序?逆向工程中的字節序陷阱與實戰解析

[逆向工程]如何理解小端序?逆向工程中的字節序陷阱與實戰解析 關鍵詞:逆向工程、小端序、字節序、二進制分析、數據解析 引言:為什么字節序是逆向工程師的必修課? 在逆向工程中,分析二進制數據是最基礎的任務之一。…

項目三 - 任務2:創建筆記本電腦類(一爹多叔)

在本次實戰中,我們通過Java的單根繼承和多接口實現特性,設計了一個筆記本電腦類。首先創建了Computer抽象類,提供計算的抽象方法,模擬電腦的基本功能。接著定義了NetCard和USB兩個接口,分別包含連接網絡和USB設備的抽象…

ElasticSearch深入解析(六):集群核心配置

1.開發模式和生產模式 Elasticsearch默認運行在開發模式下,此模式允許節點在配置存在錯誤時照常啟動,僅將警告信息寫入日志文件。而生產模式則更為嚴格,一旦檢測到配置錯誤,節點將無法啟動,這是一種保障系統穩定性的安…

【Prometheus-MySQL Exporter安裝配置指南,開機自啟】

目錄 1. 創建 MySQL 監控用戶2. 配置 MySQL 認證文件3. 安裝 mysqld_exporter4. 配置 Systemd 服務5. 啟動并驗證服務6. 修改Prometheus配置常見錯誤排查錯誤現象排查步驟 6. 驗證監控數據關鍵注意事項 7. Grafana看板 1. 創建 MySQL 監控用戶 mysql -uroot -p123456 # 登錄M…

redis未授權訪問漏洞學習

一、Redis常見用途 1. Redis介紹 全稱與起源: Redis全稱Remote Dictionary Service(遠程字典服務),最初由antirez在2009年開發,用于解決網站訪問記錄統計的性能問題。發展歷程: 從最初僅支持列表功能的內存數據庫,經過十余年發展已支持多種…

4.27搭建用戶界面

更新 router下面的index.js添加新的children 先區分一下views文件夾下的不同vue文件: Home.vue是繪制home頁面的所有的表格。 Main.vue是架構頭部和左側目錄的框架的。 研究一下這個routes對象,就可以發現重定向redirect的奧妙所在,我們先把…

【MySQL】(8) 聯合查詢

一、聯合查詢的作用 由于范式的規則,數據分到多個表中,想要查詢完整的信息,就需要聯合查詢多張表。比如查詢學生的學生信息和所在班級的信息,就需要聯合查詢學生表和班級表。 二、聯合查詢過程 案例:查詢學生姓名為孫…

圖漾官網Sample_V1版本C++語言完整參考例子---單相機版本

文章目錄 1.參考例子 主要梳理了圖漾官網Sample_V1版本的例子 1.參考例子 主要增加了從storage區域讀取相機參數的設置,使用圖漾PercipioViewer軟件,如何將相機參數保存到srorage區,可參考鏈接:保存相機參數操作 保存參數設置 注…

關于本地端口啟動問題

如何啟動一個本地端口 1. Node.js (使用Express框架) 使用node.js的方法 注意:下列bash命令最好在管理員權限運行的cmd窗口中進行,否則可能會有權限錯誤 首先,確保您已經安裝了Node.js和npm。然后,創建一個新的Node.js項目并安…

產銷協同的作用是什么?又如何對各部門發揮作用?

目錄 一、產銷協同的對象有哪些? 1. 客戶需求 2. 市場趨勢 3. 供應鏈伙伴 4. 企業戰略目標 二、產銷協同的作用是什么? 1. 提高客戶滿意度 2. 降低企業成本 3. 增強市場競爭力 4. 優化資源配置 三、產銷協同對各部門怎么發揮作用?…

React Router v7 從入門到精通指南

一、設計思想與核心原理 1. 設計哲學 組件即路由&#xff1a;路由以 <Route> 組件形式聲明&#xff0c;與 React 組件樹深度集成聲明式導航&#xff1a;通過 <Link> 和 useNavigate 實現無刷新路由跳轉動態匹配機制&#xff1a;路徑參數、通配符、優先級匹配規則…

Python爬蟲實戰:獲取網yi新聞網財經信息并做數據分析,以供選股做參考

一、引言 在財經領域,股市信息對投資者意義重大。網yi新聞作為知名新聞資訊平臺,其股市板塊蘊含豐富的最新股市熱點信息。然而,依靠傳統人工方式從海量網頁數據中獲取并分析這些信息,效率低下且難以全面覆蓋。因此,利用爬蟲技術自動化抓取相關信息,并結合數據分析和機器…