大话数据结构--数据结构概述
數據結構概述
- 總目錄
- 前言
- 一、數據結構緒論
- 1.1 為啥要學數據結構?
- 1.2 數據結構起源
- 1.3 基本概念和術語
- 1.3.1 數據
- 1.3.2 數據元素
- 1.3.3 數據項
- 1.3.4 數據對象
- 1.3.5 數據結構
- 1.4 邏輯結構與物理結構
- 1.4.1 邏輯結構
- 1.集合結構
- 2.線性結構
- 3.樹形結構
- 4.圖形結構
- 1.4.2 物理結構
- 1.順序存儲結構
- 2.鏈式存儲結構
- 1.5 抽象數據類型
- 1.5.1 兩個實例
- 1.坐標實例
- 2.超級瑪麗
- 3.描述抽象數據類型的格式
- 1.6 總結
總目錄
一、數據結構概述
二、算法概述
三、線性表
前言
文章來源于大話數據結構
提升編程基礎能力
數據結構、操作系統、計租、網絡
陸續會慢慢更新!
資料獲取
一、數據結構緒論
1.1 為啥要學數據結構?
第一學業要求
第二是它太重要了,想要寫代碼寫的好,想要走的遠,學!
沒錯就是這么簡單
1.2 數據結構起源
早期計算機主要是用來計算,但現實中,我們更多的不是解決數值計算的問題,而是需要一些更科學有效的手段(比如表、樹和圖等數據結構)的幫助,才能更好地處理問題。所以數據結構是一門研究非數值計算的程序設計問題中的操作對象,以及它們之間的關系和操作等相關問題的學科。
1.3 基本概念和術語
1.3.1 數據
是描述客觀事物的符號,是計算機中可以操作的對象,是能被計算機識別,并輸入給計算機處理的符號集合
數據不僅僅包括整型、實型等數值類型,還包括字符及聲音、圖像、視頻等非數值類型。
1.3.2 數據元素
是組成數據的、有一定意義的基本單位,在計算機中通常作為整體處理。也被稱為記錄。
在人類中,人就是數據元素
在畜類中,小貓小狗小雞小鴨就是數據元素
1.3.3 數據項
一個數據元素可以由若千個數據項組成。
比如人這樣的數據元素,可以有眼、耳、鼻、嘴、手、腳這些數據項,也可以有姓名、年齡、性別、出生地址、聯系電話等數據項,具體有哪些數據項,要視你做的系統來決定。
數據項是數據不可分割的最小單位。在數據結構這門課程中,把數據項定義為最小單位,是有助于我們更好地解決問題。所以,記住了,數據項是數據的最小單位。但真正討論問題時,數據元素才是數據結構中建立數據模型的著眼點。就像我們討論一部電影時, 是討論這部電影角色這樣的“數據元素” ,而不是針對這個角色的姓名或者年齡這樣的“數據項”去研究分析。
這例子舉的真不錯!
1.3.4 數據對象
數據對象是性質相同的數據元素的集合,是數據的子集。
什么叫性質相同呢,是指數據元素具有相同數量和類型的數據項,比如,還是剛才的例子,人都有姓名、生日、性別等相同的數據項。
既然數據對象是數據的子集,在實際應用中,處理的數據元素通常具有相同性質,在不產生混淆的情況下,我們都將數據對象簡稱為數據。
1.3.5 數據結構
結構,簡單的理解就是關系,比如分子結構,就是說組成分子的原子之間的排列
方式。**嚴格點說,結構是指各個組成部分相互搭配和排列的方式。**在現實世界中,不
同數據元素之間不是獨立的,而是存在特定的關系,我們將這些關系稱為結構。那數
據結構是什么?
數據結構:是相互之間存在一種或多種特定關系的數據元素的集合。
在計算機中,數據元素并不是孤立、雜亂無序的,而是具有內在聯系的數據集
合。數據元素之間存在的- -種或多種特定關系,也就是數據的組織形式。
**為編寫出一個“好” 的程序,必須分析待處理對象的特性及各處理對象之間存在的關系。**這也就是研究數據結構的意義所在。
1.4 邏輯結構與物理結構
1.4.1 邏輯結構
邏輯結構:是指數據對象中數據元素之間的相互關系。
邏輯結構分為以下四種:
1.集合結構
集合結構:集合結構中的數據元素除了同屬于-一個集合外,它們之間沒有其他關系。各個數據元素是“平等”的,它們的共同屬性是“同屬于一個集合”。數據結構中的集合關系就類似于數學中的集合
2.線性結構
線性結構:線性結構中的數據元素之間是一對一的關系
3.樹形結構
樹形結構:樹形結構中的數據元素之間存在一種一對多的層次關系
4.圖形結構
圖形結構:圖形結構的數據元素是多對多的關系
將每一個數據元素看做-一個結點,用圓圈表示
元素之間的邏輯關系用結點之間的連線表示,如果這個關系是有方向的,那么用帶箭頭的連線表示
1.4.2 物理結構
物理結構:是指數據的邏輯結構在計算機中的存儲形式
數據是數據元素的集合,那么根據物理結構的定義,實際上就是如何把數據元素存儲到計算機的存儲器中。存儲器主要是針對內存而言的,像硬盤、軟盤、光盤等外部存儲器的數據組織通常用文件結構來描述。
數據的存儲結構應正確反映數據元素之間的邏輯關系,這才是最為關鍵的,如何存儲數據元素之間的邏輯關系,是實現物理結構的重點和難點。
數據元素的存儲結構形式有兩種:順序存儲和鏈式存儲。
1.順序存儲結構
順序存儲結構:是把數據元素存放在地址連續的存儲單元里,其數據間的邏輯關系和物理關系是一致的
在物理位置上連續,在內存地址上也是連續的
這種存儲結構其實很簡單,說白了,就是排隊占位。大家都按順序排好,每個人占一小段空間,大家誰也別插誰的隊。
很好理解~~~~
2.鏈式存儲結構
如果就是這么簡單和有規律,一切就好辦了。可實際上,總會有人插隊,也會有人要上廁所、有人會放棄排隊。所以這個隊伍當中會添加新成員,也有可能會去掉老元素,整個結構時刻都處于變化中。顯然,面對這樣時常要變化的結構,順序存儲是不科學的。那怎么辦呢?
現在如銀行、醫院等地方,設置了排隊系統,也就是每個人去了,先領一個號,等著叫號,叫到時去辦理業務或看病。在等待的時候,你愛在哪在哪,可以坐著、站著或者走動,甚至出去逛-圈,只要及時回來就行。你關注的是前一一個 號有沒有被叫到,叫到了,下一個就輪到了。
對概念好的記憶,我覺得就是通過生活中的實例來記憶了,書中舉的例子都很好!!!
顯然,鏈式存儲就靈活多了,數據存在哪里不重要,只要有一個指針存放了相應的地址就能找到它了。
書中舉了一個很好的例子,哈哈哈哈哈,這里截圖下來供大家參考
邏輯結構是面向問題的,而物理結構就是面向計算機的,其基本的目標就是將數據及其邏輯關系存儲到計算機的內存中。
1.5 抽象數據類型
我們對已有的數據類型進行抽象,就有了抽象數據類型。
抽象數據類型(Abstract Data Type, ADT): 是指一個數學模型及定義在該模型上的一組操作。 抽象數據類型的定義僅取決于它的一組邏輯特性,而與其在計算機內部如何表示和實現無關。
聽概念的確不太好理解,前期可以先學著,到后面慢慢用到的時候會有好的理解!
1.5.1 兩個實例
1.坐標實例
比如我們編寫關于計算機繪圖或者地圖類的軟件系統,經常都會用到坐標。也就是說,總是有成對出現的x和y,在3D系統中還有z出現,既然這三個整型數字是始終在一起出現,我們就定義一個叫point的抽象數據類型,它有x、y、z三個整型變量,這樣我們很方便地操作-一個point數據變量就能知道這一點的坐標了 。
2.超級瑪麗
根據抽象數據類型的定義,它還包括定義在該模型上的一組操作。就像“ 超級瑪麗”這個經典的任天堂游戲,里面的游戲主角是馬里奧(Mario)。 我們給他定義了幾種基本操作,走(前進、后退、上、下)、跳、打子彈等。一個抽象數據類型定義了:一個數據對象、數據對象中各數據元素之間的關系及對數據元素的操作。
至于,一個抽象數據類型到底需要哪些操作,這就只能由設計者根據實際需要來定。像馬里奧,可能開始只有兩種操作,走和跳,后來發現應該要增加一種打子彈的操作,再后來發現有些玩家希望它可以走得快點,就有了按住打子彈鍵后前進就會‘跑” 的操作。這都是根據實際情況來設計的。
3.描述抽象數據類型的格式
ADT 抽象數據類型名 Data數據元素之間邏輯關系的定義 Operation操作1初始條件操作結果描述操作2...操作3... endADT1.6 總結
數據,數據對象,數據元素,數據項之間的關系
數據對象是性質相同的數據元素的集合,是數據的子集。實際生活中等同于數據
數據元素是組成數據的基本單位
數據項是組成數據元素的基本單位,是數據不可分割的最小單位
由以上能得出,數據結構是相互之間存在一種或多種特點關系的數據元素集合
同樣是結構,從不同的角度來討論,有不同的分類
Ok,書很好,看完它,下課!
總結
以上是生活随笔為你收集整理的大话数据结构--数据结构概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab基于瑞利信道,基于matla
- 下一篇: 数据结构系列之大话数据结构