国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)結(jié)構(gòu)】第二章——線性表(1)

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)】第二章——線性表(1)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【數(shù)據(jù)結(jié)構(gòu)】第二章——線性表(1),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),算法,c語言,改行學(xué)it,學(xué)習(xí)

導(dǎo)言

大家好,很高興又和大家見面啦?。?!從今天開始,我們將進(jìn)入線性表的學(xué)習(xí)。
線性表是算法題命題的重點(diǎn)。這類算法題實(shí)現(xiàn)起來比較容易且代碼量較少,但是要求具有最優(yōu)的性能(時(shí)間復(fù)雜度、空間復(fù)雜度),因此,我們應(yīng)該牢固掌握線性表的各種基本操作(基于兩種存儲結(jié)構(gòu)),在平時(shí)的學(xué)習(xí)中多注重培養(yǎng)動(dòng)手能力。
今天這個(gè)篇章是對線性表的一個(gè)基本知識點(diǎn)的介紹,在這個(gè)篇章里,我們將學(xué)習(xí)到什么是線性表,線性表的基本操作又有哪些,下面我們開始介紹今天的內(nèi)容。

1.線性表的定義

線性表是具有相同數(shù)據(jù)類型的n(n>=0)個(gè)數(shù)據(jù)元素的有限序列,其中n為表長,當(dāng)n=0時(shí)線性表是一個(gè)空表。

1.1 理解定義

從線性表的定義中我們可以提取到幾個(gè)信息:

  1. 相同類型
  2. n>=0
  3. 有限序列

通過這幾個(gè)信息,我可以知道:

  • 線性表的數(shù)據(jù)元素的元素類型,只要是相同的數(shù)據(jù)類型就行;
  • 線性表的元素個(gè)數(shù)可以為0,即線性表中沒有元素;
  • 線性表的元素個(gè)數(shù)是有上限的,即線性表的元素有一個(gè)終點(diǎn);
  • 線性表的元素的排列是有序的,并不是雜亂無章的;

大家現(xiàn)在可以思考一下,在我們學(xué)習(xí)C語言的過程中有沒有與線性表的這些條件吻合的知識點(diǎn)呢?

有朋友很快就想到了——數(shù)組。
現(xiàn)在我們來看一下數(shù)組的一些特點(diǎn):

  • 數(shù)組的元素是相同數(shù)據(jù)類型的;
  • 數(shù)組的元素的下標(biāo)是從0開始依次遞增的;
  • 在定義數(shù)組時(shí)是需要指定數(shù)組大小的;
  • 數(shù)組最后一個(gè)元素的下標(biāo) = 數(shù)組大小 - 1;

現(xiàn)在咱們再來對比一下線性表的定義,是不是完全符合呀!因此我們可以得到結(jié)論:

  • 數(shù)組就是一種線性表

在線性表中,數(shù)據(jù)元素因?yàn)槭怯行蚺帕械?,所以每一個(gè)元素都有自己對應(yīng)的序號,我們將這個(gè)序號稱為位序

與數(shù)組下標(biāo)不同的是,線性表數(shù)據(jù)元素的位序是從1開始的,位序?yàn)?的元素就是線性表中的第一個(gè)元素,位序?yàn)閚的元素就是線性表中的第n個(gè)元素,若用L命名線性表,則其一般表示為:
L = ( a 1 , a 2 , … … , a i , a i + 1 , … … , a n ) L=(a_1,a_2,……,a_i,a_{i+1},……,a_n) L=(a1?,a2?,……,ai?,ai+1?,……,an?)

在這個(gè)式子中 a 1 a_1 a1? a n a_n an?分別代表的是線性表的第一個(gè)元素和線性表的最后一個(gè)元素。

1.2 線性表的圖像

在線性表中,只有唯一的“第一個(gè)”數(shù)據(jù)元素,所以我們又將 a 1 a_1 a1?稱為表頭元素;
在線性表中,也只有唯一的“最后一個(gè)”數(shù)據(jù)元素,所以我們又將 a n a_n an?稱為表尾元素;
如果用圖像來表示的話,線性表的圖像應(yīng)該如下所示:
【數(shù)據(jù)結(jié)構(gòu)】第二章——線性表(1),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),算法,c語言,改行學(xué)it,學(xué)習(xí)
從圖中可以看到,線性表就像是被一條線串起來的。

這時(shí)可能就有朋友有疑惑了,既然它是被一條線串起來的那為什么不叫他線性串呢?

對于這個(gè)問題,我是通過字符串來進(jìn)行理解的。

在數(shù)組篇章中,我們在介紹字符串時(shí)有說過,字符串是由雙引號引起的一個(gè)或多個(gè)字符,這里不管是一個(gè)字符也好,還是多個(gè)字符也好,它的本質(zhì)上就是單一的字符,就比如"abc123" 這個(gè)字符串,它是由字符a、bc、1、2、3這六個(gè)字符加上\0組成的,我們在看到這些元素的時(shí)候能夠得到的信息也就是單一的信息。

而對于線性表而言,它的每一個(gè)數(shù)據(jù)元素都是由不同的數(shù)據(jù)項(xiàng)組成的,也就是說,一個(gè)數(shù)據(jù)元素中可能含有多個(gè)數(shù)據(jù)項(xiàng),就比如班級里每次考試完會(huì)按學(xué)生的總分進(jìn)行排名,如下圖所示:
【數(shù)據(jù)結(jié)構(gòu)】第二章——線性表(1),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),算法,c語言,改行學(xué)it,學(xué)習(xí)
在這個(gè)排名表中,這里的數(shù)據(jù)元素 a 1 a_1 a1? a 6 0 a_60 a6?0它們包含了4個(gè)數(shù)據(jù)項(xiàng),并不是像字符串這種只有單一數(shù)據(jù)項(xiàng)的元素,因此,我們在看到 a 1 a_1 a1?后可以了解到這所有的信息,就像這里的這張排名表一樣;

1.3 線性表的邏輯特性

同樣還是一張排名表,下面大家來判斷一下,這個(gè)排名表是不是線性表:
【數(shù)據(jù)結(jié)構(gòu)】第二章——線性表(1),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),算法,c語言,改行學(xué)it,學(xué)習(xí)

在這個(gè)排名表中,有兩個(gè)并列第一,兩個(gè)并列第五,三個(gè)并列第八,我們現(xiàn)在來根據(jù)線性表的定義來判斷;

  • 這里的數(shù)據(jù)元素的數(shù)據(jù)類型都是相同的——由排名、姓名、學(xué)號、總分這四個(gè)元素組成的結(jié)構(gòu)體類型;
  • 這里的排名都是有序的,按照從小到大的次序來排列的;
  • 這里的元素是有限的,總共有十個(gè)元素;

單從這些點(diǎn)看的話,這張表也是屬于線性表的。但是對于一個(gè)線性表,它不僅僅只需要滿足這些條件,它還需要滿足以下的邏輯特性:

  • 表頭元素與表尾元素都是唯一的
  • 除了表頭元素外,其它的每個(gè)元素有且僅有一個(gè)直接前驅(qū);
  • 除了表尾元素外,其它的每個(gè)元素有且僅有一個(gè)直接后繼;

下面我們再來看這張表:

  • 劉一和陳二并列第一——并不滿足唯一的表頭元素;
  • 對于張三來說,他擁有兩個(gè)直接前驅(qū)——并不滿足有且僅有一個(gè)直接前驅(qū);
  • 王五和趙六并列第五,對于李四來說,他擁有兩個(gè)直接后繼——并不滿足有且僅有一個(gè)直接后繼;
  • 對于孫七來說,他擁有兩個(gè)直接前驅(qū)——并不滿足有且僅有一個(gè)直接前驅(qū);
  • 周八、吳九和鄭十并列第八——并不滿足唯一的表尾元素;
  • 對于孫七來說,他擁有三個(gè)直接后繼——并不滿足有且僅有一個(gè)直接后繼;

通過這些邏輯特性判斷,這張表并不是一個(gè)線性表。

因此我們可以得知線性表是指這種線性有序的邏輯結(jié)構(gòu),這也是線性表這個(gè)名字的由來;

2.線性表的特點(diǎn)

對于線性表這種線性有序的邏輯結(jié)構(gòu),它具有以下的特點(diǎn):

  1. 表中元素的個(gè)數(shù)是有限的;
  2. 表中元素具有邏輯上的順序性,表中元素有其先后次序;
  3. 表中元素都是數(shù)據(jù)元素,每個(gè)元素都是單個(gè)元素;
  4. 表中元素的數(shù)據(jù)類型都相同,這意味著每個(gè)元素占有相同大小的存儲空間;
  5. 表中元素具有抽象性,即僅討論元素間的邏輯關(guān)系,而不考慮元素究竟表示什么內(nèi)容。

注意:線性表是一種邏輯結(jié)構(gòu),表示元素之間一對一的相鄰關(guān)系。后面提到的順序表和鏈表是指存儲結(jié)構(gòu),兩者屬于不同層面的概念,因此不要將其混淆。

3.線性表的基本操作

一個(gè)數(shù)據(jù)結(jié)構(gòu)的基本操作是指其最核心、最基本的操作。其它較復(fù)雜的操作可通過調(diào)用其基本操作來實(shí)現(xiàn)。線性表最主要的操作如下:

  1. 創(chuàng)建與銷毀
    • InitList(&L):初始化表。構(gòu)造一個(gè)空的線性表;
    • DestroyList(&L):銷毀操作。銷毀線性表,并釋放線性表L所占用的內(nèi)存空間。
  1. 插入與刪除
    • ListInSERT(&L,i,e):插入操作。在表L中第i個(gè)位置插入指定元素e;
    • ListDelete(&L,i,&e):刪除操作。刪除表L中第i個(gè)位置的元素,并用e返回刪除元素的值;
  1. 查找
    • LocateElem(L,e):按值查找操作。在表L中查找具有給定關(guān)鍵字值的元素;
    • GetElem(L,i):按位查找操作。獲取表L中第i個(gè)位置的元素的值;
  1. 其它操作
    • Length(L):求表長。返回線性表L的長度,即L中數(shù)據(jù)元素的個(gè)數(shù);
    • PrintList(L):輸出操作。按前后順序輸出線性表L的所有元素值;
    • Empty(L):判空操作。若L為空表,則返回true,否則返回false;

對于這些基本操作,有些地方我們需要注意:

  1. 對數(shù)據(jù)的操作無非就是——創(chuàng)建、銷毀、增刪改查;
  2. 我們可以根據(jù)實(shí)際情況來定義其它的基本操作,如這里的求表長、輸出、判空等;
  3. 這里的操作內(nèi)容并不是C語言提供的庫函數(shù),而是需要我們自己進(jìn)行自定義的函數(shù);
  4. 對于這些操作名,我們可以根據(jù)自己的喜好來定義,但是命名要有可讀性;
  5. 這里展示的符號&表示C++語言中的引用調(diào)用,在C語言中采用指針也可達(dá)到同樣的效果;
  6. 基本操作的實(shí)現(xiàn)取決于采用那種存儲結(jié)構(gòu),存儲結(jié)構(gòu)不同,算法的實(shí)現(xiàn)也不同;

在了解完這些基本操作后,下面大家來思考一個(gè)問題:

為什么要實(shí)現(xiàn)對數(shù)據(jù)結(jié)構(gòu)的基本操作?

這是因?yàn)槲覀冊诮窈蟮墓ぷ髦薪?jīng)常是團(tuán)隊(duì)合作的形式進(jìn)行編程的,所以我們在編程的過程中需要將自己定義的數(shù)據(jù)結(jié)構(gòu)通過函數(shù)的形式進(jìn)行封裝,以此來方便其他的成員進(jìn)行使用;
其次將常用的操作/運(yùn)算封裝成函數(shù)也可以避免重復(fù)工作,降低出錯(cuò)的風(fēng)險(xiǎn),大大的提高編程的效率;

結(jié)語

今天的內(nèi)容到這里就結(jié)束了,在這個(gè)篇章中,我們介紹了什么是線性表,線性表有哪些特點(diǎn),以及對于線性表有哪些基本操作。
在介紹這些內(nèi)容的同時(shí),我們了解了幾個(gè)重要的術(shù)語——表長、空表、表頭、表尾、前驅(qū)、后繼、數(shù)據(jù)元素的位序(從1開始)。
今天對線性表的基本操作只是簡單的提及了一下,并未展開進(jìn)行詳細(xì)介紹,在后續(xù)的篇章中,我會(huì)代碼來實(shí)現(xiàn)這些基本操作,大家在閱讀完這一篇章只需要了解這些基礎(chǔ)知識點(diǎn)就行。
最后,感謝大家的翻閱,咱們下一篇再見!?。?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-777809.html

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】第二章——線性表(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)內(nèi)容-----第二章算法

    算法 是指,解決問題或執(zhí)行任務(wù)的一系列步驟、規(guī)則或指令的有序集合。它可以用來解決各種不同的問題,例如搜索、排序、優(yōu)化、圖像和語音識別等。在計(jì)算機(jī)科學(xué)中,算法通常用于編寫程序以實(shí)現(xiàn)特定任務(wù)。算法可以被用于各種不同的領(lǐng)域,如人工智能、機(jī)器學(xué)習(xí)、數(shù)據(jù)

    2024年02月06日
    瀏覽(26)
  • C++算法之旅、05 基礎(chǔ)篇 | 第二章 數(shù)據(jù)結(jié)構(gòu)

    常用代碼模板2——數(shù)據(jù)結(jié)構(gòu) - AcWing 使用結(jié)構(gòu)體指針,new Node() 非常慢,創(chuàng)建10萬個(gè)節(jié)點(diǎn)就超時(shí)了,做筆試題不會(huì)用這種方式(優(yōu)化是提前初始化好數(shù)組,但這樣跟數(shù)組模擬沒區(qū)別了,而且代碼量很長) 使用兩個(gè)數(shù)組,e存儲val,ne存儲next。空節(jié)點(diǎn)next用-1表示 826. 單鏈表 - AcWi

    2024年02月10日
    瀏覽(21)
  • 【AcWing算法基礎(chǔ)課】第二章 數(shù)據(jù)結(jié)構(gòu)(部分待更)

    【AcWing算法基礎(chǔ)課】第二章 數(shù)據(jù)結(jié)構(gòu)(部分待更)

    本專欄文章為本人AcWing算法基礎(chǔ)課的學(xué)習(xí)筆記,課程地址在這。如有侵權(quán),立即刪除。 鄰接表 :存儲圖和樹 e數(shù)組存儲每個(gè)結(jié)點(diǎn)的值,ne數(shù)組存儲每個(gè)結(jié)點(diǎn)的指向的下一個(gè)結(jié)點(diǎn)。 數(shù)組模擬鏈表比較快,指針模擬會(huì)涉及到new操作,比較慢。 題目鏈接 :826. 單鏈表 1.1題目描述

    2024年02月13日
    瀏覽(22)
  • 數(shù)據(jù)結(jié)構(gòu)英文習(xí)題解析-第二章 鏈表List

    前言:最近快到FDS考試了,po重刷了一下學(xué)校的題目,自己整理了一些解析orz 因?yàn)閜o在自己找解析和學(xué)習(xí)的過程中非常痛苦,所以在此共享一下我的題目和自己寫的解題思路,歡迎各位指出錯(cuò)誤~全章節(jié)預(yù)計(jì)會(huì)陸續(xù)更新,可在專欄查看~ HW2 1. For a sequentially stored linear list of leng

    2024年04月11日
    瀏覽(26)
  • 從零開始學(xué)數(shù)據(jù)分析之——《線性代數(shù)》第二章 矩陣

    從零開始學(xué)數(shù)據(jù)分析之——《線性代數(shù)》第二章 矩陣

    元素全為實(shí)數(shù)的矩陣稱為實(shí)矩陣 ?元素全為負(fù)數(shù)的矩陣稱為復(fù)矩陣 只有一行(列)的矩陣稱為行(列)矩陣 元素全為零的矩陣稱為零矩陣 行數(shù)和列數(shù)都等于n的矩陣稱為n階矩陣或n階方陣 主對角線元素全為1,其余元素全為0的矩陣稱為單位矩陣,記作E或I 兩個(gè)矩陣行數(shù)和列數(shù)

    2023年04月23日
    瀏覽(24)
  • 線性代數(shù) 第二章 矩陣

    一、概念 個(gè)數(shù)排成的m行n列的表格 二、運(yùn)算法則 三、初等變換 (1)用非零常數(shù)k乘矩陣的某一行(列); (2)互換矩陣某兩行(列)的位置; (3)把某行(列)的k倍加至另一行(列)。 稱為矩陣的 初等行(列)變換 ,統(tǒng)稱 初等變換 。矩陣經(jīng)初等行變換后秩不變。 初等

    2024年02月08日
    瀏覽(18)
  • 高等數(shù)學(xué):線性代數(shù)-第二章

    n bm{n} n 元線性方程組 設(shè)有 n 個(gè)未知數(shù) m 個(gè)方程的線性方程組 { a 11 x 1 + a 12 x 2 + ? + a 1 n x n = b 1 a 21 x 1 + a 22 x 2 + ? + a 2 n x n = b 2 ? ? ? ? a m 1 x 1 + a m 2 x 2 + ? + a m n x n = b m begin{cases} a_{11}x_{1} + a_{12}x_{2} + cdots + a_{1n}x_{n} = b_{1} \\\\ a_{21}x_{1} + a_{22}x_{2} + cdots + a_{2n}x_{n} = b

    2024年02月11日
    瀏覽(26)
  • 線性代數(shù)第二章矩陣及其運(yùn)算詳解

    線性代數(shù)第二章矩陣及其運(yùn)算詳解

    一.線性方程組和矩陣 1.概念 如圖所示,該矩陣稱為 m行n列矩陣 若行數(shù)和列數(shù)都等于n,則該矩陣稱為 n階方陣 兩個(gè)矩陣的行數(shù)相等,列數(shù)也相等,就稱它們?yōu)?同型矩陣 若A=(aij)和B=(bij)是同型矩陣,且aij=bij(i=1,2,...,m;j=1,2,...,n),則稱 矩陣A與矩陣B相等 ,記作 A=B 2.特殊

    2024年01月25日
    瀏覽(34)
  • 線性代數(shù)(魏福義)——第二章:矩陣及其向量特征

    線性代數(shù)(魏福義)——第二章:矩陣及其向量特征

    矩陣 是一個(gè) 矩形數(shù)表 ,它是研究線性方程組、向量及其變換的重要工具 在數(shù)學(xué)中,矩陣是一個(gè)按照長方形排列的復(fù)數(shù)或?qū)崝?shù)集合,它是將一組 有序的數(shù)據(jù) 視為“ 整體量 ”進(jìn)行 表述 和 運(yùn)算 ,從而使問題的表述更加簡潔。 2.1.1 矩陣 由 m × n 個(gè)數(shù)aij排成的 m行n列 的 數(shù)表

    2024年02月04日
    瀏覽(22)
  • <<數(shù)值分析>>第二章線性方程組的直接解法

    <<數(shù)值分析>>第二章線性方程組的直接解法

    ? ????????解線性方程組是工程數(shù)學(xué)中最常見的模型之一。所說的“最常見”有兩方面的含義: 1)一部分工程問題的本身建立的就是線性方程組模型; 2)較多工程問題建立的非線性方程組模型需要轉(zhuǎn)化為線性方程組的求解。 ? ????????線性方程組為Ax=b,以下介紹

    2024年02月08日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包