亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

基本概念和術(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ù):是描述客觀事物的符號(hào),是計(jì)算機(jī)中可以操作的對(duì)象,是能被計(jì)算機(jī)識(shí)別并輸入給計(jì)算機(jī)處理的符號(hào)集合

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

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

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

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

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

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

數(shù)據(jù)項(xiàng)

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

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

我們?cè)谡嬲懻搯栴}的時(shí)候,主要還是數(shù)據(jù)元素,而不是去討論數(shù)據(jù)項(xiàng)。你看個(gè)電影不可能一直去研究別人演員撒。

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

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

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

為什么又說是性質(zhì)相同的數(shù)據(jù)元素的集合呢?你在定義一個(gè)類的時(shí)候,你會(huì)去根據(jù)某一個(gè)人去定義嗎?不會(huì)吧,你肯定是根據(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í)世界中,所有的數(shù)據(jù)元素都不是獨(dú)立的,二十有特定的關(guān)系連接在一起的,我們就將這些關(guān)系稱之為結(jié)構(gòu)

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

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

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

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

所以,要想編寫出一個(gè)好的程序,必須分待處理對(duì)象的特性以及個(gè)處理對(duì)象之間存在的關(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ù)對(duì)象中數(shù)據(jù)元素之間的相互關(guān)系

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

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

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

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

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

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

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

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

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

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

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

我們上面聊完了邏輯結(jié)構(gòu),也清楚了大致的屬性是什么。我們?cè)賮砜纯戳硪粋€(gè)-------物理結(jié)構(gòu)

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

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

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

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

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

順序存儲(chǔ)

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

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

鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

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

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

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

我們?cè)诳闯橄髷?shù)據(jù)類型的時(shí)候,先來看看數(shù)據(jù)類型是什么:

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

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

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

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

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

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

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

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

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

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

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

比如Java中,你會(huì)先去定義一個(gè)模型層,用來泛指某一類模型。

總結(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)

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

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

相關(guān)文章

最新評(píng)論