數據結構學習筆記(一)——《大話數據結構》

第一章 數據結構緒論

基本概念和術語

數據

描述客觀事物的符號,計算機中可以操作的對象,能被計算機識別并輸入給計算機處理的符號的集合。包括整型、實型等數值類型和字符、聲音、圖像、視頻等非數值類型。

數據元素

組成數據的、有一定意義的基本單位,在計算機中通常作為整體處理。也被稱為記錄。

  • 例如:禽類的數據元素為雞、鴨、鵝等。

數據項

一個數據元素可以由若干個數據項組成,數據項是數據不可分割的最小單位。

  • 例如:對于人這個數據元素,可以有眼、耳、嘴、鼻等數據項,也可以有姓名、年齡、性別等數據項,具體選取哪些數據項視所構建的系統決定。

數據對象

是性質相同的數據元素的集合,是數據的子集。其中“性質相同”指數據元素具有相同數量和類型的數據項。通常將數據對象簡稱為數據。

數據結構

是相互之間存在一種或多種特定關系的數據元素的集合。計算機中的數據元素并不是孤立、雜亂無序的,而是具有內在聯系的數據集合。

邏輯結構與物理結構

邏輯結構

是指數據對象中數據元素之間的相互關系。

用示意圖表示數據的邏輯結構時:

  • 將每一個數據元素看作一個節點,用圓圈表示;
  • 元素之間的邏輯關系用節點之間的連線表示,如果這個關系是有方向的,那么用帶箭頭的連線表示。
集合結構

集合結構中的數據元素除了同屬于一個集合外,互相之間沒有其他關系。

1340553-20180306105425835-1995423397.png

線性結構

線性結構中數據元素之間是一對一的關系。

1340553-20180306105433771-1117138910.png

樹形結構

樹形結構中數據元素之間存在一種一對多的層次關系。

1340553-20180306105440270-294438694.png

圖形結構

圖形結構的數據元素是多對多的關系

1340553-20180306105450481-1914075632.png

物理結構(存儲結構)

物理結構是指數據的邏輯結構在計算機中的存儲形式。數據的存儲結構應正確反映數據元素之間的邏輯關系,如何存儲數據元素之間的邏輯關系是實現物理結構的重點和難點。

順序存儲結構

把數據元素存放在地址連續的存儲單元里,其數據間的邏輯關系和物理關系是一致的。如數組。

1340553-20180306105459459-580711487.png

數據結構中經常會需要添加新的數據元素、去掉舊的數據元素,面對這種時刻變化的情況,順序結構不夠科學。

鏈式存儲結構

鏈式存儲結構把數據元素存放在任意的存儲單元里,這組存儲單元可以是連續的,也可以是不連續的。數據元素的存儲關系并不能反應其邏輯關系,需要用一個指針存放數據元素的地址,這樣通過地址就可以找到相關聯的數據元素的位置。

1340553-20180306105506468-2065415955.png

邏輯結構是面向問題的,物理結構則是面向計算機的,其基本目標就是將數據及其邏輯關系存儲到計算機的內存中。

抽象數據類型

數據類型

數據類型是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。例如在高級語言中,每個變量、常量和表達式都有各自的取值范圍,類型就用來說明變量或表達式的取值范圍和所能進行的操作。

在C語言中,按照取值的不同,數據類型可以分成兩類:

  • 原子類型:是不可以再分解的基本類型,包括整型、實型、字符型等;
  • 結構類型:由若干個類型組合而成,是可以再分解的。例如。整型數組是由若干整型數據組成的。

抽象數據類型

對已有數據類型進行抽樣,就得到了抽象數據類型。

抽象數據類型(Abstract Data Type, ADT)是指一個數學模型及定義在該模型上的一組操作。抽象數據類型的定義僅取決于它的一組邏輯特性,與其在計算機內部如何表示和實現無關。

例如各種計算機,無論是超算、PC、平板、智能手機等,都擁有“整數”類型,也需要整數間的運算,那么整型就是一個抽象數據類型,盡管它在上面提到的各種計算機中的實現方法可能不一樣,但由于其定義的數學特征相同,在編程者看來,它們就是相同的。因此,抽象的意義在于數據類型的數學抽象特性。

抽象數據類型體現了程序設計中問題分解、抽象和信息隱藏的特性。抽象數據類型把實際生活中的問題分解為多個規模小且容易處理的問題,然后建立一個計算機能處理的數據模型,并把每個功能模塊的實現細節作為一個獨立的單元,從而使具體實現過程隱藏起來。

這里給出描述抽象數據類型的標準格式:

ADT 抽象數據類型名
Data數據元素之間邏輯關系的定義
Operation   操作1初始條件操作結果描述操作2......操作n......
endADT

總結回顧

數據結構相關概念

1340553-20180306105533236-133588807.png

數據結構定義

數據結構是相互之間存在一種或多種特定關系的數據元素的集合。

數據結構分類

1340553-20180306105548201-1645134107.png

抽象數據類型及其描述方法

ADT 抽象數據類型名
Data數據元素之間邏輯關系的定義
Operation   操作1初始條件操作結果描述操作2......操作n......
endADT

轉載于:https://www.cnblogs.com/communedefence/p/8513152.html

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

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

相關文章

6. Z 字形變換

6. Z 字形變換 將一個給定字符串 s 根據給定的行數 numRows ,以從上往下、從左到右進行 Z 字形排列。 比如輸入字符串為 “PAYPALISHIRING” 行數為 3 時,排列如下: P A H N A P L S I I G Y I R之后,你的輸出需要從…

java的垃圾回收機制包括:主流回收算法和收集器(jvm的一個主要優化方向)

2019獨角獸企業重金招聘Python工程師標準>>> java的垃圾回收機制是java語言的一大特色,解放了開發人員對內存的復雜控制,但如果你想要一個高級java開發人員,還是需要知道其機制,所謂不僅要會用還要知道其原理這樣才能用…

北京dns服務器ip地址_什么是DNS? 域名系統,DNS服務器和IP地址概念介紹

北京dns服務器ip地址介紹 (Introduction) By the end of this article, you should have a better understanding of:在本文末尾,您應該對以下內容有更好的了解: What DNS is and what it does 什么是DNS及其作用 What DNS servers do DNS服務器做什么 …

767. 重構字符串

767. 重構字符串 給定一個字符串S,檢查是否能重新排布其中的字母,使得兩相鄰的字符不同。 若可行,輸出任意可行的結果。若不可行,返回空字符串。 示例 1: 輸入: S “aab” 輸出: “aba” 示例 2: 輸入: S “aaab” 輸出: “…

長生生物狂犬病疫苗造假

這兩天暴發的長生生物狂犬病疫苗造假案真是很厲害,世人都說投資不過山海關還真有一定道理。 市場上長生生物的狂犬病疫苗約占1/4左右,是一個非常大的用量。 你別說,疫苗真的是非常適合造假: 1. 狂犬病有一定潛伏期,幾天…

小程序 雜記

調試打印測試的方法: 方法1、顯示提示框 (微信自帶的API) wx.showToast({title: 成功,icon: success,duration: 2000 }) 方法2、js的console.log()方法 //test.js Page({onLoad: function(option){console.log(option.query)} }) wx.showToa…

使用fetch封裝ajax_如何使用Fetch在JavaScript中進行AJAX調用

使用fetch封裝ajaxI will be sharing bite sized learnings about JavaScript regularly in this series. Well cover JS fundamentals, browsers, DOM, system design, domain architecture and frameworks. 在本系列中,我將定期分享有關JavaScript的小知識。 我們…

RxJS筆記

RxJS 《深入淺出RxJS》讀書筆記遺留問題 Observable的HOT與COLD對應的實際場景,以及在編碼中的體現chapter1 html部分 測試你對時間的感覺按住我一秒鐘然后松手你的時間:毫秒jquery實現 var time new Date().getTime(); $("#hold-me").moused…

滾動一定的高度底色遞增

$(window).scroll(function() {var swipeHeight 200;//完全變色高度var scrollTop $(document).scrollTop();//頁面滾動高度var x scrollTop/swipeHeight;$(".head-bg").css({"opacity":x}); }) 轉載于:https://www.cnblogs.com/lhj-blog/p/8521525.htm…

@hot熱加載修飾器導致static靜態屬性丟失(已解決)

react開發的時候,引入熱加載,用了修飾器的引入方式,發現了一個很有意思的問題,網上并沒有相關文章,所以拋出來探討下。 一段很簡單的測試代碼。但是經過babel編碼后,變得很有意思。假設編碼成es2016&#x…

49. 字母異位詞分組

49. 字母異位詞分組 給你一個字符串數組,請你將 字母異位詞 組合在一起。可以按任意順序返回結果列表。 字母異位詞 是由重新排列源單詞的字母得到的一個新單詞,所有源單詞中的字母都恰好只用一次。 示例 1: 輸入: strs [“eat”, “tea”, “tan”…

python 入門程序_非Python程序員的Python速成課程-如何快速入門

python 入門程序This article is for people who already have experience in programming and want to learn Python quickly.本文適用于已經有編程經驗并希望快速學習Python的人們。 I created this resource out of frustration when I couldnt find an online course or a…

cmd命令操作Oracle數據庫

//注意cmd命令執行的密碼字符不能過于復雜 不能帶有特殊符號 以免執行不通過 譬如有!#¥%……&*之類的 所以在Oracle數據庫設置密碼是不要太復雜 /String Database "ORCL"; 不指向地址程序只能安裝在數據庫服務器上才能執行到命令String …

OpenCV學習(7.16)

寫了個實現攝像頭上畫線并輸出角度的東西……雖然很簡單,但腦殘的我還是debug了很長時間。 1 // 圓和直線.cpp : 定義控制臺應用程序的入口點。2 //3 4 #include "stdafx.h"5 6 using namespace std;7 using namespace cv;8 9 void onMouse(int event, in…

學習vue.js的自我梳理筆記

基本語法格式&#xff1a; <script> new Vue({ el: #app, data: { url: http://www.runoob.com } }) </script> 指令 【指令是帶有 v- 前綴的特殊屬性。】 判斷 <p v-if"seen">現在你看到我了</p> 參數 <a v-bind:href"url"&…

722. 刪除注釋

722. 刪除注釋 給一個 C 程序&#xff0c;刪除程序中的注釋。這個程序source是一個數組&#xff0c;其中source[i]表示第i行源碼。 這表示每行源碼由\n分隔。 在 C 中有兩種注釋風格&#xff0c;行內注釋和塊注釋。 字符串// 表示行注釋&#xff0c;表示//和其右側的其余字符…

如何創建一個自記錄的Makefile

My new favorite way to completely underuse a Makefile? Creating personalized, per-project repository workflow command aliases that you can check in.我最喜歡的完全沒用Makefile的方法&#xff1f; 創建個性化的按項目存儲庫工作流命令別名&#xff0c;您可以檢入。…

【BZOJ3262】陌上花開

CDQ分治模板 注意三元組完全相等的情況 1 #include<bits/stdc.h>2 using namespace std;3 const int N100010,K200010;4 int n,k,cnt[N],ans[N];5 struct Node{6 int a,b,c,id;7 bool operator<(const Node& k)const{8 if(bk.b&&ck.c) re…

Spring+jpaNo transactional EntityManager available

2019獨角獸企業重金招聘Python工程師標準>>> TransactionRequiredException: No transactional EntityManager availableEntityManager執行以下方法(refresh, persist, flush, joinTransaction, remove, merge) 都需要需要事務if (transactionRequiringMethods.cont…

python項目構建_通過構建4個項目來學習Python網絡

python項目構建The Python programming language is very capable when it comes to networking. Weve released a crash course on the freeCodeCamp.org YouTube channel that will help you learn the basics of networking in Python.當涉及到網絡時&#xff0c;Python編程…