欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):緒論

 更新時間:2021年07月27日 14:41:29   作者:魚小洲  
這篇文章主要介紹了Java的數(shù)據(jù)解構(gòu)基礎(chǔ),希望對廣大的程序愛好者有所幫助,同時祝大家有一個好成績,需要的朋友可以參考下,希望能給你帶來幫助

基本概念和術(shù)語

要想知道數(shù)據(jù)結(jié)構(gòu)是什么,我們首先得去知道,數(shù)據(jù)和結(jié)構(gòu)是什么;

數(shù)據(jù)結(jié)構(gòu)=數(shù)據(jù)+結(jié)構(gòu)

也就是說,我們先去研究數(shù)據(jù),再去把這些數(shù)據(jù)組成一定得樣子(結(jié)構(gòu)),自然而然的成了數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)

數(shù)據(jù):是描述客觀事物的符號,是計算機(jī)中可以操作的對象,是能被計算機(jī)識別并輸入給計算機(jī)處理的符號集合

這樣說可能還是有人覺得頭痛,說直白點,空氣粒子組成了空氣,一個個的人組成了一群人,這樣就懂了吧。
以后見了面你就可以跟別人說,你是一個數(shù)據(jù),看人家會不會揍你

但是,你理解可以去這么理解,用的話不能這么去用,我們這兒說的數(shù)據(jù),是一個抽象性的概念,其實也就是符號,比如,你的for循環(huán)。所以這些符號必須滿足兩個條件:

  • 可以輸入到計算機(jī)中
  • 能被計算機(jī)程序處理

數(shù)據(jù)元素

數(shù)據(jù)元素:是組成數(shù)據(jù)的,有一定意義的基本單位,在計算機(jī)中通常作為整體處理。也被稱之為記錄

比如,在人類中,人就是數(shù)據(jù)元素,在動物中,雞鴨魚這些就是數(shù)據(jù)元素;

數(shù)據(jù)項

數(shù)據(jù)項:一個數(shù)據(jù)元素可以由瑞剛額數(shù)據(jù)項組成;數(shù)據(jù)項是不可分割的最小單位

舉個例子:組成人這樣的數(shù)據(jù)元素就是由耳朵,鼻子,眼睛這樣的數(shù)據(jù)項組成

我們在真正討論問題的時候,主要還是數(shù)據(jù)元素,而不是去討論數(shù)據(jù)項。你看個電影不可能一直去研究別人演員撒。

數(shù)據(jù)對象

數(shù)據(jù)對象:是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的子集

人都有生日吧,都有年齡吧,都有姓名吧,這就是他們的性質(zhì)。

為什么又說是性質(zhì)相同的數(shù)據(jù)元素的集合呢?你在定義一個類的時候,你會去根據(jù)某一個人去定義嗎?不會吧,你肯定是根據(jù)總體的特征去定義,比如:

class Person(){
	private String name;
	private String addr;
	private int age;
}

你肯定是這樣去定義,而不是:

class Zhangsan(){
	private int money;
	private int age;
}

懂了吧。

結(jié)構(gòu)

簡單理解就是關(guān)系。比如分子結(jié)構(gòu),就是說組成分子的原子之間的排列方式。

在現(xiàn)實世界中,所有的數(shù)據(jù)元素都不是獨立的,二十有特定的關(guān)系連接在一起的,我們就將這些關(guān)系稱之為結(jié)構(gòu)

比如你和你的親戚,一方有難,八方支援的道理總得知道。

數(shù)據(jù)結(jié)構(gòu)

是相互之間存在一種或多種特地給關(guān)系的數(shù)據(jù)元素的集合

這下你看完了前面的,就知道了數(shù)據(jù)結(jié)構(gòu)是啥了吧。

所以,要想編寫出一個好的程序,必須分待處理對象的特性以及個處理對象之間存在的關(guān)系。這也就是我們?yōu)槭裁匆獙W(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的意義。

我們提到了很多次的關(guān)系,到底是什么樣的關(guān)系,我們往下看看?

邏輯結(jié)構(gòu)與物理結(jié)構(gòu)

按照我們看待的方式不同,分為邏輯結(jié)構(gòu)和物理結(jié)構(gòu)

邏輯結(jié)構(gòu)

邏輯結(jié)構(gòu):是指數(shù)據(jù)對象中數(shù)據(jù)元素之間的相互關(guān)系

這其實也是我們最需要關(guān)注的東西;邏輯結(jié)構(gòu)又分以下四種:

集合結(jié)構(gòu)

集合結(jié)構(gòu)中的數(shù)據(jù)元素除了同屬于一個集合外,他們之間沒有任何關(guān)系。各個數(shù)據(jù)元素是平等的,他們的共同屬性就是同屬于一個集合。
就比如說,你和你的大學(xué)同學(xué)都處于同一個教室,但是你和他們并不是很熟
在數(shù)據(jù)結(jié)構(gòu)中,集合就很類似于數(shù)學(xué)當(dāng)中的集合,長這樣:
在這里插入圖片描述

線性結(jié)構(gòu)

這個很好理解,就是一對一的關(guān)系,就類似于排成一條線。長這樣兒:
在這里插入圖片描述

樹形結(jié)構(gòu)

數(shù)據(jù)元素就像一棵樹一樣擺放,就注定了,數(shù)據(jù)元素是一對多的形式
在這里插入圖片描述

圖形結(jié)構(gòu)

元素與元素之間用線連接,如果是指向某元素,就用方向箭頭連接。同處于一個集合內(nèi),擺放順序是雜亂無章的
在這里插入圖片描述

所以我們也不難看出,邏輯結(jié)構(gòu)是針對具體問題,為了解決問題。所以,在這個基礎(chǔ)上,我們必須選擇一個合適的數(shù)據(jù)結(jié)構(gòu)。

物理結(jié)構(gòu)

我們上面聊完了邏輯結(jié)構(gòu),也清楚了大致的屬性是什么。我們再來看看另一個-------物理結(jié)構(gòu)

物理結(jié)構(gòu)好像在其他的書里面也叫做是存儲結(jié)構(gòu),但是都差不多,意思都是相近的。

物理結(jié)構(gòu):是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的存儲形式

我們前面知道,數(shù)據(jù)是數(shù)據(jù)元素的集合,那么根據(jù)物理結(jié)構(gòu)的定義,實際上就是怎么把數(shù)據(jù)元素存儲在計算機(jī)的存儲器中存儲器主要是針對內(nèi)存而言的,比如說硬盤,光盤之類的。

數(shù)據(jù)的存儲結(jié)構(gòu)應(yīng)正確的反應(yīng)出數(shù)據(jù)元素之間的邏輯關(guān)系,這才是最關(guān)鍵的。具體怎么去存儲數(shù)據(jù)元素之間的邏輯關(guān)系才是物理結(jié)構(gòu)的重難點。

數(shù)據(jù)元素存儲形式有兩種:順序存儲和鏈?zhǔn)酱鎯?/p>

順序存儲

把數(shù)據(jù)元素存放在地址連續(xù)的存儲單元里,其數(shù)據(jù)的邏輯關(guān)系和物理關(guān)系是一致的。
在這里插入圖片描述

就好比說,你去食堂吃飯,挨個排隊,誰也別插隊。
在我們當(dāng)初學(xué)計算機(jī)的時候,當(dāng)你想創(chuàng)建一個數(shù)組,那么計算機(jī)就會根據(jù)你指定的長度開辟出一個空間,挨個存儲

鏈?zhǔn)酱鎯Y(jié)構(gòu)

如果世間萬物都是這樣的有順序那么就好了。但是呢,怎么可能;
在實際上,總是會有人插隊,也總是會有人不排了,突然就走了。如果我們還是用順序存儲,無疑是浪費空間的。所以我們就選擇了鏈?zhǔn)酱鎯Α?br /> 鏈?zhǔn)酱鎯Y(jié)構(gòu):把數(shù)據(jù)元素存放在任意的存儲單元里,可以是連續(xù)的,也可以是不連續(xù)的
這樣的話,數(shù)據(jù)的存儲關(guān)系并不能反映出邏輯關(guān)系,因為都是雜亂無章的。所以,我們就需要一個索引去指向他,就類似于指針的作用。每個元素都會有自己的地址:
在這里插入圖片描述

邏輯結(jié)構(gòu)是面向數(shù)據(jù)的,物理結(jié)構(gòu)是面向計算機(jī)的。所以他的基本目標(biāo)就是將數(shù)據(jù)存儲在計算機(jī)中。

抽象數(shù)據(jù)類型

我們在看抽象數(shù)據(jù)類型的時候,先來看看數(shù)據(jù)類型是什么:

數(shù)據(jù)類型:是指一組性質(zhì)相同的值的集合及定義在此集合上的一些操作的總稱
在Java中,有int string boolean等

當(dāng)初設(shè)計計算機(jī)語言的人為什么要設(shè)計數(shù)據(jù)類型呢?

比如說,大家都需要買房子。自然而然,有人想買大房子,有人想買小房子,還有的人買不起房子(比如我)

于是呢,就出來了各式各樣的房子,比如別墅,小戶型等等。

同樣的道理,計算機(jī)也不是無窮大的,比如你只想計算1+1這樣的簡單加減法,就不需要那么大的內(nèi)存空間。所以啊,計算機(jī)的研究者們就考慮,細(xì)分出具體的數(shù)據(jù)類型出來。

再者,因為計算機(jī)有不同的操作系統(tǒng),我們不可能為每一種計算機(jī)都編寫一套計算機(jī)語言。我們就可以把這些共同的屬性給抽取出來,作為一種抽象體。

抽象是指抽取出事物具有的普遍性的性質(zhì)

抽象是一種思維,而不是一種具體的形式。

抽象數(shù)據(jù)類型:是指一個數(shù)學(xué)模型及定義在該模型上的一組操作。
抽象的數(shù)據(jù)仍然是定義的邏輯關(guān)系,而與事物的本身無關(guān)。

事實上,抽象數(shù)據(jù)類型體現(xiàn)了程序設(shè)計中問題分解,抽象和信息隱藏的特性。

抽象數(shù)據(jù)類型把實際生活中的問題分解為多個規(guī)模小且容易處理的問題,然后建立一個計算機(jī)能處理的數(shù)據(jù)模型。并把每個功能模塊的實現(xiàn)細(xì)節(jié)作為一個獨立的單元,從而使具體實現(xiàn)過程隱藏起來。

比如Java中,你會先去定義一個模型層,用來泛指某一類模型。

總結(jié)

所以,數(shù)據(jù)結(jié)構(gòu)就是相互存在一種或者多種特定關(guān)系的數(shù)據(jù)元素的集合。。同樣是結(jié)構(gòu),卻有不同的表現(xiàn)形式。

邏輯結(jié)構(gòu)

  • 集合結(jié)構(gòu)
  • 線性結(jié)構(gòu)
  • 樹形結(jié)構(gòu)
  • 圖形結(jié)構(gòu)

物理結(jié)構(gòu)

  • 順序存儲結(jié)構(gòu)
  • 鏈?zhǔn)酱鎯Y(jié)構(gòu)

本篇文章就到這里了,希望能給你帶來幫助,也希望能夠您能夠關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

最新評論