數據結構入門:像整理收納一樣簡單!

在我們生活中,經常會面對這樣的問題:
“我要怎么整理我的衣柜?”
“電腦里照片太多了,怎么歸類才方便查找?”
其實,程序員也有類似的煩惱。他們不整理衣柜,而是“整理數據”。而這門關于如何“收納”和“使用”數據的學問,就叫做數據結構

一、數據結構的基本概念

1、數據

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

2、數據元素

數據元素是數據的基本單位。

一個數據元素有若干個數據項組成(數據項是構成數據元素的最小單位)。

如下表所示,學生記錄就是一個數據元素,姓名、生日、年齡均為數據項,構成了一條學生記錄。

數據元素
學生記錄一個人另一個人
數據項姓名
數據項生日數據項組合項
數據項
數據項
數據項年齡

3、數據對象與數據結構

數據對象——具有相同性質的數據元素的集合

例如:全國所有門店的排隊顧客信息

數據結構——一種或多種特定關系的數據源的集合

例如:某個特定門店的排隊顧客信息和他們之間的聯系

4號、5號、6號都是A門店排隊顧客,4號在5號之前,5號在6號之前,他們具有特定關系,組成一個數據結構
5號、2號他們之間具有相同性質,同一個數據對象里的元素————
4號——>|5號|——>6號  A門店排隊顧客信息|   ||   | 
1號——>|2號|——>3號  B門店排隊顧客信息————

4、數據類型

原子類型(int、bool等)

結構類型(其值可以分解成若干成分)

Struct Customer{int num;int people;...
};

抽象數據類型(用數學化的語言定義數據的邏輯結構、定義運算。只有當要用計算機去是實現這種結構的時候才考慮哪種存儲結構。

二、數據結構三要素

數據的邏輯結構獨立于存儲結構,數據的存儲結構依賴于邏輯結構。

例如,有序表—>順序表/鏈表

1. 數據的邏輯結構

這指的是數據之間的關系

常見的邏輯結構有:

  • 集合:結構中的元素同2屬于一個集合外,別無其它關系,例如:{1,7,9}。
  • 線性結構:像排隊買奶茶,前后有順序。例如:數組、鏈表。
  • 樹形結構:像家譜,有祖先和后代。例如:二叉樹、家族樹。
  • 圖形結構:像城市地鐵圖,站點之間可以相互連接。例如:社交網絡圖。

2. 數據的存儲結構

在存儲數據時,通常不僅要存儲各數據元素的值,而且要存儲數據之間的關系。

這個講的是數據如何放進計算機的內存里,關系到程序運行的效率。

常見的存儲方式有:

  • 順序存儲(像數組)
    就像地鐵列車車廂,每節車廂相連,不好插隊。

  • 鏈式存儲(像鏈表)
    像一串鑰匙環,你可以隨意添加或拆掉中間的鑰匙。

  • 索引存儲

  • 散列存儲

3. 數據的運算

施加在數據上的運算包括運算的定義和實現。

運算的定義是針對邏輯結構的,運算的實現是針對存儲結構的。

運算的實現,這是說我們能對這種結構的數據做哪些事,比如:

  • 插入(加一個新的數據)

  • 刪除(拿掉某個數據)

  • 查找(找到你要的那條信息)

  • 排序(按大小、字母、時間排序)

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

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

相關文章

力扣每日一題--2025.7.15

📚 力扣每日一題–2025.7.15 3135. 有效單詞 (簡單) 大家好!今天我們要來聊聊一道有趣的編程題——有效單詞 📝 題目描述 題目分析 📚 題目要求我們判斷一個字符串是否為有效單詞。有效單詞需要滿足以下…

Mysql數據庫——增刪改查CRUD

文章目錄一、數據庫的基礎命令二、創建表三、增(create)四、查詢(retrieve)五、條件查詢(where)六、修改(update)七、刪除(delete)一、數據庫的基礎命令 1.使用客戶端連接服務器 mysql -u root…

關于pytorch虛擬環境及具體bug問題修改

本篇博客包含對于虛擬環境概念的講解和代碼實現過程中相關bug的解決關于虛擬環境我的pytorch虛擬環境在D盤,相應python解釋器也在D盤(一起),但是我的pycharm中的項目在C盤,使用的是pytorch的虛擬環境,這是為…

U盤量產工具與性能優化完全指南

本文還有配套的精品資源,點擊獲取 簡介:U盤量產工具是IT行業中的專業軟件,用于批量生產或修復U盤。安國和銀燦是兩個提供U盤量產工具的主控芯片制造商,提供初始化、格式化、分區管理、性能優化、故障修復、個性化定制、固件升級…

Golang http開發實戰:構建RESTful API保姆級教程

目錄 章節1:RESTful API的精髓與Go的Web開發哲學 RESTful API的設計原則 Go的http包核心組件 實戰:第一個RESTful API端點 章節2:設計優雅的RESTful路由 路由設計的注意事項 使用Gorilla Mux實現動態路由 章節3:請求與響應的藝術:解析與格式化 解析請求數據 統一…

UGUI 性能優化系列:第一篇——基礎優化與資源管理

UGUI 性能優化系列:第一篇——基礎優化與資源管理 UGUI 性能優化系列:第二篇——Canvas 與 UI 元素管理 在 Unity 游戲中,用戶界面(UI)是玩家與游戲交互的核心。然而,不當的 UGUI 使用常常成為游戲性能的…

多端協同的招聘系統源碼開發指南:小程序+APP一體化設計

當下,很多企業選擇搭建屬于自己的多端協同招聘平臺,尤其是中大型人力資源公司、連鎖品牌企業,以及同城服務平臺,更是將“小程序APP”一體化招聘系統視為提升效率、降低用工成本的利器。 今天,筆者將從源碼開發的角度&a…

Maven 配置文件核心配置:本地倉庫、鏡像與 JDK 版本

Maven 配置文件核心配置:本地倉庫、鏡像與 JDK 版本 在 Maven 項目開發中,合理配置 settings.xml 文件能顯著提升依賴管理效率。本文將聚焦本地倉庫、鏡像加速和 JDK 版本這三個核心配置,結合 IDEA 環境詳細講解配置方法與作用。 一、Maven 配…

【時時三省】(C語言基礎)通過指針引用字符串

山不在高,有仙則名。水不在深,有龍則靈。 ----CSDN 時時三省如在printf函數中輸出一個字符串。這些字符串都是以直接形式(字面形式)給出的,在一對雙撇號中包含若干個合法的字符。使用字符串的更加靈活方便的方法——通…

【Linux驅動-快速回顧】一文快速理解GIC內部寄存器對中斷的控制

第一部分:GIC的功能和組成 1. GIC要解決的根本問題 在一個復雜的片上系統(SoC)中,有非常多的硬件模塊(如定時器、串口、按鍵、DMA等),它們都需要在完成任務或遇到特定事件時通知CPU。同時&#…

【IoTDB 線上小課 17】開源 ≠ 免費,3 分鐘總結開源商用指南

【IoTDB 視頻小課】第十七期,解答你最關心的開源商業使用問題!關于 IoTDB,關于物聯網,關于時序數據庫,關于開源...一個問題重點,3-5 分鐘,我們講給你聽:原來開源商業化有這么多規則開…

VUE項目學習筆記 v-for綁定數據,該數據異步獲取,同時需要對v-for的DOM節點進行js操作

問題描述:項目里有一個輪播圖,輪播圖的圖片數據從服務器獲取,用v-for生成DOM在頁面中顯示,輪播圖插件會通過new Swiper給DOM添加CSS、事件等,實現輪播效果。在這里存在操作順序問題:當服務器返回圖片數據后…

Science | 如何利用“T細胞+組蛋白乙酰化”兩大國自然熱點?T細胞耗竭機制與代謝-表觀遺傳調控的新范式

CD8?T細胞耗竭(T cell exhaustion)是腫瘤免疫治療的核心瓶頸,其表觀遺傳重塑機制(如組蛋白修飾)是當前國自然重點資助的前沿方向。耗竭T細胞(TEX)是指在慢性感染(如持續性病毒感染&…

Logback 配置的利器:深入理解<property>與<variable>

在構建現代 Java 應用程序時,日志是不可或缺的一部分。一個健壯的日志系統不僅能幫助我們監控應用程序的運行狀態,還能在問題發生時提供關鍵的診斷信息。Logback 作為 SLF4J 的一個流行實現,以其高性能和靈活的配置而廣受開發者喜愛。 然而&a…

Java中excel字典轉換

? 背景說明EasyExcel 原生的 ExcelProperty 注解不支持 dictType(不像那樣有 Excel(dictType"xxx")),所以如果你想實現字典翻譯功能,就需要自己實現 Converter 接口,比如 DictConvert。? 什么是 DictConve…

數據結構-3(雙向鏈表、循環鏈表、棧、隊列)

一、思維導圖二、雙向循環鏈表的判空、尾插、遍歷(反向)、尾刪class Node:def __init__(self, data):self.data dataself.next Noneself.prior Noneclass circularDoublyLinkedList():def __init__(self):self.head Noneself.tail Noneself.size 0def isEmpty(self):retu…

IDEA運行Tomcat一直提示端口被占用(也查不到該端口)

首先查看是否是因為Java程序異常終止,進程沒有完全釋放導致。打開資源管理器,找到所有的java.exe,強制結束任務。如果仍然不行,那就極可能還是開啟了hyper-V虛擬化,查看排除的tcp端口范圍端口號沒被占用卻提示占用&…

AWS Lambda 最佳實踐:構建高效無服務器應用的完整指南

引言 AWS Lambda 作為無服務器計算的核心服務,讓開發者能夠專注于業務邏輯而無需管理服務器。本文將通過實際案例和代碼示例,分享 Lambda 開發中的關鍵最佳實踐。 1. 函數設計原則 單一職責原則 每個 Lambda 函數應該只做一件事,這樣更容易測試、維護和擴展。 # ? 不推…

29、鴻蒙Harmony Next開發:深淺色適配和應用主題換膚

目錄 應用深淺色適配 應用跟隨系統的深淺色模式 應用主動設置深淺色模式 系統默認判斷規則 使用建議與限制 設置應用內主題換膚 概述 自定義主題色 設置應用內組件自定義主題色 設置應用局部頁面自定義主題風格 設置應用頁面局部深淺色 系統缺省token色值 應用深淺…

源鑒SCA4.9︱多模態SCA引擎重磅升級,開源風險深度治理能力再次進階

SCA技術已成為數字供應鏈開源治理的關鍵入口。源鑒SCA深度融合懸鏡原創專利級AI智能代碼疫苗技術,是國內首款集源碼組件成分分析、代碼成分溯源分析、制品成分二進制分析、容器鏡像成分掃描、運行時成分動態追蹤及開源供應鏈安全情報預警分析等六大核心引擎為一體的…