2022考研数据结构_1 绪论
https://gitee.com/fakerlove/Data-Structure-文章地址
文章目錄
- 1. 數據結構緒論
- 1.1 什么是數據結構?
- 1.2 數據結構起源
- 1.3 程序設計=數據結構+算法
- 1.4基本概念和術語
- 1.4.1數據
- 1.4.2 數據元素
- 1.4.3 數據項
- 1.4.4 數據對象
- 1.4.5 數據結構
- 1.5 邏輯結構與物理結構
- **1.5.1** **邏輯結構**
- **1.5.2** **物理結構**
- **1.6** **抽象數據類型**
- 1.6.1 數據類型
- 1.6.2 抽象數據類型
- **1.7**總結回顧
1. 數據結構緒論
1.1 什么是數據結構?
數據結構:是相互之間存在一種或多種特定關系的數據元素的集合。
1.2 數據結構起源
? 1968年,美國的高德納教授開創了數據結構的課程體系。
? 數據結構是一門研究非數值計算的程序設計問題中的操作對象,以及它們之間的關系和操作等相關問題的學科。
? 程序設計的實質是對確定的問題選擇一種好的結構,加上設計一種好的算法。數據結構在程序設計當中占據了重要的地位。
1.3 程序設計=數據結構+算法
1.4基本概念和術語
? 說到數據結構是什么,我們得先來談談什么叫做數據。
? 正所謂“巧婦難為無米之炊”,在強大的計算機,也要有“米”下鍋才可以干活的,否則就是一堆破銅爛鐵。這個“米”就是數據。
1.4.1數據
*數據:是描述客觀事物的符號,是計算機中可以操作的對象,是能被計算機識別,并輸入給計算機處理的符號集合。*數據不僅僅包括整型、實型等數值類型,還包括字符及聲音、圖像、視頻等非數值類型。
? 例如平時我們所用的搜索中會有網頁、MP3、圖片、視頻等分類。MP3就是聲音數據,圖片就是圖像數據,而網頁其實指的就是全部數據的搜索,包括最重要的數字和文字等文字數據。
? 也就是說我們所說的數據就是符號,而且這些符號必須具備兩個前提:
? 1.可以輸入到計算機中
? 2.能被計算機程序處理
? 對于整型、實型等數值類型,可以進行數值計算。
? 對于字符型數據類型,就需要進行非數值的處理。而聲音、圖像、視頻等其實是可以通過編碼的手段變成字符數據來處理的。
1.4.2 數據元素
? 數據元素:是組成數據的、有一定意義的基本單位,在計算機中通常作為整體處理。也被稱為記錄。
? 例如,在人類中,人就是數據元素。畜類中,牛、馬、羊、雞、豬、狗等動物就是禽類的數據元素。
1.4.3 數據項
? 數據項:一個數據元素可以由若干個數據項組成。
? 例如,人作為一個數據元素,可以有眼、耳、鼻、嘴、手、腳這些數據項,也可以有姓名、年齡、性別、出生地址、聯系電話等數據項,具體有哪些數據項,要視你做的系統來決定。
? *數據項是不可分割的最小單位。*記住數據項是數據的最小單位。但在真正討論問題時,數據元素才是數據結構中建立數據模型的著眼點。例如討論電影時,是討論電影角色這樣的“數據元素”,而不是針對這個角色的姓名或者年齡這樣的“數據項”去研究分析。
1.4.4 數據對象
? 數據對象:是性質相同的數據元素的集合,是數據的子集。
? 性質相同就是指數據元素具有相同數量和類型的數據項,例如,人都有姓名、生日、性別等相同的數據項。
? 在實際運用中,在不產生混淆的情況下,我們將數據對象簡稱為數據。
1.4.5 數據結構
? 結構,簡單的理解就是關系,比如分子結構,就是說組成分子的原子之間的排列方式。嚴格來說,結構是指各個組成部分相互搭配和排列的方式。在現實世界中,不同元素之間不是獨立的,而是存在特定的關系,我們將這些關系稱為結構。
數據結構:是相互之間存在一種或多種特定關系的數據元素的集合。
在計算機中,數據元素并不是孤立、雜亂無序的,而是具有內在聯系的數據集合。數據元素之間存在的一種或者多種特定關系,也就是數據的組織形式。編寫一個“好”的程序,必須分析待處理對象的特性及各處理對象之間存在的關系。這也就是研究數據結構的意義所在。
1.5 邏輯結構與物理結構
? 根據視點的不同,數據結構可以分為邏輯結構和物理結構兩大類。
1.5.1 邏輯結構
? *邏輯結構:是指數據對象中元素之間的相互關系。這是最需要關注的問題。*邏輯結構分為以下四種:
1. 集合結構
? *集合結構:集合結構中的數據元素除了同屬于一個集合外,他們之間沒有其他關系。*各個數據元素是“平等”的,共同屬性是“同屬于一個集合”。類似于數學中的集合(如圖所示)。
2. 線性結構
? 線性結構:線性結構中的數據元素之間是一對一的關系(如圖所示)。
3. 樹形結構
? 樹形結構:樹形結構中的數據元素之間存在一種一對多的層次關系(如圖所示)。
? 圖形結構:圖形結構的數據元素是多對多的關系(如圖所示)。
? 示意圖表示數據的邏輯結構時,1.將每個元素看做一個結點,用圓圈表示。2.元素之間的邏輯關系用結點之間的連線表示,如果關系是有方向的,那么用帶箭頭的連線表示。
? 由以上例子可以看出,邏輯結構是針對具體問題的,是為了解決某個問題在對問題理解的基礎上,選擇合適的數據結構表示數據元素之間的邏輯關系。
1.5.2 物理結構
? 物理結構也叫做存儲結構。
? 物理結構:是指數據的邏輯結構在計算機中的存儲形式。
? 數據是數據元素的集合,根據物理結構的定義,實際上就是如何將數據元素存儲到計算機的存儲器中。存儲器主要針對內存而言的,像硬盤、軟盤、光盤等外部存儲器的數據組織通常用文件結構來描述。
? 數據的存儲結構必須正確反映數據元素之間的邏輯關系,這才是最為關鍵的,如何存儲數據元素之間的邏輯關系,是實現物理結構的難點和重點。
? 數據元素的存儲結構形式有兩種:順序存儲和鏈式存儲。
1. 順序存儲結構
? 順序存儲結構:是把數據元素存放在地址連續的存儲單元里,其數據間的邏輯關系和物理關系是一致的(如圖所示)。
? 說白了就是排隊占位,大家按順序排好,每個人占一小段空間,大家誰也別插誰的隊。
2. 鏈式存儲結構
? 在實際中,總有人會插隊,也會有人要去上廁所、有人放棄排隊,所以這個隊伍會有新成員添加,也會去掉老元素,在面對這樣要時常變化的結構時,順序存儲是不科學的。
現在在銀行、醫院等地方,設置了排隊系統,也就是每個人先領一個號,等著叫號,叫到時去辦理業務或者看病。等待的過程你可以想在哪就在哪待著,你只需要關注的是你前一個號有沒有被叫到,叫到了,下一個就輪到你了。
? *鏈式存儲結構:是把數據元素存放在任意的存儲單元里,這組存儲單元可以是連續的也可以不是連續的。*數據元素的存儲關系并不能反映其邏輯關系,因此需要 用一個指針存放數據元素的地址,這樣通過地址就可以找到相關聯數據元素的位置(如圖所示)。
? 顯然,鏈式存儲就靈活多了,數據存在哪里不重要,只要有一個指針存放相應的地址就能找到它了。
? 邏輯結構是面向問題的,而物理結構就是面向計算機的,其基本的目標就是將數據及其邏輯關系存儲到計算機的內存中。
1.6 抽象數據類型
1.6.1 數據類型
? 數據類型:是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。
? 數據類型是按照值的不同進行劃分的。在高級語言中,每個變量、常量和表達式都各有各的取值范圍。類型就用來說明變量或表達式的取值范圍和能進行的操作。
? 在C語言中,按照取值的不同,數據類型就可以分為兩類:
? 1. 原子類型:是不可以再分解的基本類型,包括整型、實型、字符型等。
? 2. 結構類型:由若干個類型組合而成,是可以再分解的。例如,整型數組是由若干整型數據組成的。
? 比如,在C語言中變量聲明int a, b,這就意味著,在給變量a和b賦值時不能超出int的取值范圍,變量a和b之間的運算只能是int類型所允許的運算。
? 無論什么計算機、什么計算機語言,大都會面臨著如整數運算、實數運算、字符運算等操作,我們可以考慮把它們都抽象出來。
? *抽象是指抽取出事物具有的普遍性的本質。*它是抽出問題的特征而忽略非本質的細節,是對具體事物的一個概括。抽象是一種思考問題的方式,它隱藏了繁雜的細節,只保留實現目標所必需的信息。
1.6.2 抽象數據類型
? 對已有的數據類型進行抽象,就有了抽象數據類型。
? *抽象數據類型(Abstract Data Type , 簡稱ADT):是指一個數據模型及定義在該模型上的一組操作。*抽象數據類型的定義僅取決于它的一組邏輯特性,而與其在計算機內部如何操作如何標示和實現無關。
? **“抽象”的意義在于數據類型的數學抽象特性。
? 抽象數據類型不僅僅指那些已經定義并實現的的數據類型,還可以是編程者在設計程序時自己定義的數據類型。例如,在繪圖軟件中,坐標x,y,z這三個變量始終一起出現,我們就可以定義一個叫point的數據抽象類型,它有x,y,z三個整型變量,這樣就能方便的操作一個point數據變量就能知道這一點的坐標了。
? 根據抽象將數據類型的定義,它還可以定義在該模型上的一組操作。
? 一個抽象數據類型定義了:一個數據對象、數據對象中各元素之間的關系及對數據元素的操作。至于,一個抽象數據類型到底需要哪些操作,這就只能由設計者根據實際需要來定。例如,馬里奧這個游戲,開始可能只有走和跳兩種操作,后來發現應該增加一種打子彈的操作,再后來有玩家希望可以走快一點,就有了按住打子彈鍵后前進就會“跑”的操作。這都是根據實際情況來設計的。
? 事實上,*抽象數據類型體現了程序設計中問題分解、抽象和信息隱藏的特性。*抽象數據類型把實際生活中的問題分解為多個規模小且容易處理的問題,然后建立一個計算機能處理的數據模型,并把每個功能模塊的實現細節作為一個獨立的單元,從而使具體實現過程隱藏起來。
? 為方便對抽象數據類型進行規范的描述,我們可以按照下面描述的抽象數據類型的標準格式來編寫程序:
1.7總結回顧
? 前面介紹了數據結構的一些相關概念,如圖所示:
? 這些概念給出了數據結構的定義:*數據結構是相互之間存在一種或者多種特定關系的數據元素的集合。*同樣是結構,從不同角度來討論,會有不同的分類,如圖所示:
? 還介紹了抽象數據類型及它的描述方法。
總結
以上是生活随笔為你收集整理的2022考研数据结构_1 绪论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1057: [ZJOI2007]棋盘制作
- 下一篇: ApplicationContext容器