數據結構_線性表

?線性表的定義和特點

線性表是具有相同特性的數據元素的一個有限序列

(a_{1},a_{2},a_{3},......a_{i-1},a_{i},a_{i+1},....a_{n})

a{_{1}}:線性起點/起始節點

a_{i-1}?:a_{i}直接前驅

a_{i+1}?:a_{i}直接后繼

a_{n}:線性終點/終端節點

n:元素總個數,表長

下標:是元素的序號,表示元素在表中的位置

n=0時稱為空表

線性表

由n(n>0)個數據元素(結點),a_{1},a_{2},...a_{n}組成的有限序列

將非空的線性表(n>0)記作:(a_{1},a_{2},...a_{n})

這里的數據元素a_{i}(1\leq i\leq n)只是一個抽象的符號,其具體含義在不同的情況下,可以不同

例1

分析26個英文字母組成的英文表

? ? ? ? (A,B,C...Z)

數據元素都是字母,元素間關系是線性關系

例2

分析學生情況登記表

每條記錄也是線性關系

例3

某單位歷年擁有計算機的數量(4,6,45,34,33) 線性關系(先后)

例4?

12星座 (白羊座,金牛座,...雙魚座) 線性關系(先后)

同一線性表的元素必定有相同特性,數據元素之間的關系是線性關系

綜上 線性表的邏輯特征是:
在非空的線性表中,有且一個開始節點a_{1},它沒有直接前趨,僅有一個后繼a_{2}

在非空的線性表中,有且一個終端節點a_{n},它沒有直接后繼,僅有一個前趨a_{n-1}

其余節點a_{i}(2\leq i\leq n-1) 僅有一個前趨a_{i-1},僅有一個后繼a_{i+1}

線性表是一種典型的線性結構

線性表案例

例1

一元多項式的運算:實現兩個多項式加,減,乘運算

P_{n}(x) = p_{0} + p_{1}x + p_{2}x^{2} + ... + p_{n}x^{n}

線性表P=(p_{0},p_{1},p_{2},...,p_{n})

每一項的指數i隱含在其系數p_{i}的序號中

用數組來表示

P(x) = 10 + 5x - 4x^{2} + 3x^{3} + 2x^{4}

指數用下標表示,系數用具體值表示

操作

兩個多項式相加

R_{n}(x) = P_{n}(x) + Q_{m}(x)

線性表R? = (p_{0} + q_{0},p_{1} + q_{1},p_{2} + q_{2},...p_{n} + q_{m...})

例2:稀疏多項式

S(x) = 1 + 3x^{10000} + 2x^{20000}

如果用前面下標代表指數,會造成空間浪費

多項式非零項的數組表示

A(x) = 7 + 3x + 9x^{8} + 5x^{17}

B(x) = 8x + 22x^{7} - 9x^{8}

線性表??P = ((p1,e1),(p2,e2),(p3,e3),....(pm,em))

線性表A=((7,0),(3,1),(9,8).(5,17))

線性表B=((8,1),(22,7),(-9,8))

創建一個新數組c

分別從頭遍歷比較a和b的每一項

指數相同,對應系數相加,若其和不為0,則在c中加一個新項

指數不相同,則將指數較少的項復制到c中

一個多項式遍歷完畢時,將另一個剩余項依次復制到c即可

缺陷:并不知道數組c的空間要分配多少

順序存儲結構存在問題

存儲空間分配不靈活

運算的空間復雜度高(需要額外的空間)

解決問題

鏈式存儲結構?后續詳細介紹

例3:圖書信息管理系統

需要的功能: 增(插入)刪改查排序計數

圖書表抽象為線性表

表中每本書抽象成線性表中的數據元素

圖書順序表:數組存儲

圖書鏈表:鏈表存儲

選擇適當的存儲結構

實現此存儲結構上的基本操作

利用基本操作完成功能

總結:

線性表中數據元素的類型可以為簡單類型,也可以為復雜類型

許多實際應用問題所涉及的基本操作有很大相似性,不應為每個具體應用單獨編寫一個程序

從具體應用中抽象出共性的邏輯結構和基本操作(抽象數據類型),然后實現其存儲結構和基本操作

線性表的類型定義

抽象數據類型線性表的定義如下:

ADT List{

? ? ? ? 數據對象: D = {? ?a_{i} | a_{i}屬于Elemset,(i=1,2,....,n,n\geq 0)??}

? ? ? ? 數據關系: R = {?<a_{i-1},a_{i}> | a_{i-1},a_{i}?屬于D_{i}?(i=2,3,....n)}

? ? ? ? 基本操作:

????????????????InitList(&L)

? ? ? ? 略

} ADT List

基本操作:

初始化線性表

InitList(&L)

操作結構:構造一個空的線性表L

銷毀線性表

DestroyList(&L)

初始條件:線性表L已經存在

操作結果:銷毀線性表L

清除線性表

ClearList(&L)

初始條件:線性表L已經存在.

操作結果:將線性表L重置為空表

判斷線性表是否為空

ListEmpty(L)

初始條件:線性表L已經存在

操作結果:若線性表L為空表,則返回Ture,否則返回False

返回線性表L的元素個數

ListLlenth(L)

初始條件:線性表L已經存在

操作結果:返回線性表L中的數據元素個數

返回線性表第i個元素的值

GetElem(L,i,&e);

初始條件:線性表L已經存在,1<=i <= ListLenth(L)

操作結果:用e 返回線性表L中第i個元素的值

返回L中第1個與e滿足compare()的數據元素的位序

LocateElem(L,e,compare())

初始條件:線性表L已經存在,compare()是數據元素判定函數

操作結果:返回L中第1個與e滿足compare()的數據元素的位序,若這樣的數據元素不存在則返回值為0.

待補充

忘保存,明天補上

線性表的順序表示和實現2

順序表的特點:

以物理位置相鄰表示邏輯關系

任一元素均可隨機存取(優點)

用高級語言實現數據類型

用一維數組表示順序表

線性表可變(刪除)

數組長度不可動態定義

注:一維數組的定義方式

類型說明符 數組名[常量表達式]

?

說明:常量表達式中可以包含常量和符號常量,不能包含變量,, 即C語言中不允許對數組的大小做動態定義

解決方式:用一變量表示順序表的長度屬性

如下所示

c定義結構體

#define LIST_INIT_SIZE 100 
//線性表存儲空間的初始分配量
//定義了一個結構體 ?SqList?,包含一個數組和一個整型變量 
typedef struct { Elem Type elem[LIST_INIT_SIZE];int length; //當前長度
} SqList;

實例

多項式的順序存儲結構類型定義

c實現

#define MAXSIZE 1000
//多項式可能達到的最大長度//結構體:多項式非零項定義
typedef struct {float p; //系數int e; //指數
} Polynomial;//結構體:多項式順序存儲結構
typedef struct{Polynomial *elem; //基地址int length; //當前項個數
} SqList;

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

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

相關文章

安卓模擬器如何修改ip地址

最近很多老鐵玩游戲的&#xff0c;想多開模擬器一個窗口一個IP&#xff0c;若模擬器窗口開多了&#xff0c;IP一樣會受到限制&#xff0c;那么怎么更換自己電腦手機模擬器IP地址呢&#xff0c;今天就教大家一個修改模擬器IP地址的方法&#xff01;廢話不多說&#xff0c;直接上…

Matlab 中 fftshift 與 ifftshift

文章目錄 【 1. fftshift、ifftshift 的區別】【 2. fftshift(fft(A)) 作圖 】【 3. fftshift(fft(A)) 還原到 A 】Matlab 直接對信號進行 FFT 的結果中,前半部分是正頻,后半部分是負頻,為了更直觀的表示,需要將 負頻 部分移到 前面。【 1. fftshift、ifftshift 的區別】 M…

alibaba EasyExcel 簡單導出數據到Excel

導入依賴 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>4.0.1</version> </dependency> 1、alibaba.excel.EasyExcel導出工具類 import com.alibaba.excel.EasyExcel; import …

探索哈希函數:數據完整性的守護者

引言 銀行在處理數以百萬計的交易時&#xff0c;如何確保每一筆交易都沒有出錯&#xff1f;快遞公司如何跟蹤成千上萬的包裹&#xff0c;確保每個包裹在運輸過程中沒有丟失或被替換&#xff1f;醫院和診所為龐大的患者提供有效的醫療保健服務&#xff0c;如何確保每個患者的醫療…

假陽性和假陰性、真陽性和真陰性

在深度學習的分類問題中&#xff0c;真陽性、真陰性、假陽性和假陰性是評估模型性能的重要指標。它們的定義和計算如下&#xff1a; 真陽性&#xff08;True Positive, TP&#xff09;&#xff1a; 定義&#xff1a;模型預測為正類&#xff08;陽性&#xff09;&#xff0c;且實…

電梯修理升級,安裝【電梯節能】能量回饋設備

電梯修理升級&#xff0c;安裝【電梯節能】能量回饋設備 1、節能率評估 15%—45% 2、降低機房環境溫度&#xff0c;改善電梯控制系統的運行環境&#xff1b; 3、延長電梯使用壽命&#xff1b; 4、機房可以不需要使用空調等散熱設備的耗電&#xff0c;間接節省電能。 歡迎私詢哦…

智能數字人系統的主要功能

智能數字人系統或虛擬數字人系統&#xff0c;是指利用人工智能技術構建的虛擬人物形象&#xff0c;能夠與人進行自然交互的系統。數字人系統的主要功能包括以下幾個方面。北京木奇移動技術有限公司&#xff0c;專業的軟件外包開發公司&#xff0c;歡迎交流合作。 1. 語言理解與…

昇思25天學習打卡營第2天|初學入門

昇思25天學習打卡營第2天 文章目錄 昇思25天學習打卡營第2天網絡構建定義模型類模型層nn.Flattennn.Densenn.ReLUnn.SequentialCellnn.Softmax 模型參數 函數式自動微分函數與計算圖微分函數與梯度計算Stop GradientAuxiliary data神經網絡梯度計算 問題集合打卡記錄 網絡構建 …

橋接模式與適配器模式

一、共性和區別 橋接設計模式和適配器設計模式的共同點和明顯&#xff0c;它們都是使兩種不同的類配合工。 二者的區別在于&#xff0c;適配器模式是將已有的兩個不同接口接口組合到一起&#xff0c;使得適配器同時擁有兩個不同接口的功能&#xff0c;其目的是使兩個不兼…

Spring Boot與微服務治理框架的集成方法

Spring Boot與微服務治理框架的集成方法 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 在當今快速發展的軟件開發領域&#xff0c;微服務架構因其靈活性、可…

華為DCN之:SDN和NFV

1. SDN概述 1.1 SDN的起源 SDN&#xff08;Software Defined Network&#xff09;即軟件定義網絡。是由斯坦福大學Clean Slate研究組提出的一種新型網絡創新架構。其核心理念通過將網絡設備控制平面與數據平面分離&#xff0c;從而實現了網絡控制平面的集中控制&#xff0c;為…

移動網絡捕獲在數字化轉型中的重要性

數字化轉型重新定義了企業運營和與客戶互動的方式。它為組織提供價值的方式帶來了根本性的轉變&#xff0c;使流程更易于訪問、更高效、更具協作性和更安全。然而&#xff0c;跟上不斷發展的數字環境可能是一項挑戰&#xff0c;而未能接受數字化轉型的企業則面臨被淘汰的風險。…

表達式二叉樹的應用

在計算機科學的廣闊領域中,數據結構是構建高效程序和算法的基石。其中,表達式二叉樹(Expression Tree)是一種特殊而強大的數據結構,它將數學表達式的解析和計算轉化為直觀的圖形表示,不僅簡化了復雜的運算過程,還為編譯器設計、計算器應用以及符號數學軟件提供了堅實的基…

(八)EBO和glDrawElements

EBO EBO(Element Buffer Object)&#xff1a;元素緩沖對象&#xff0c;用于存儲頂點繪制順序索引號的GPU顯存區域 unsigned int indices[] {0, 1, 2,2, 1, 3};//EBO創建和綁定GLuint ebo 0;glGenBuffers(1, &ebo);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);glBufferD…

【MindSpore學習打卡】應用實踐-計算機視覺-ShuffleNet圖像分類:從理論到實踐

在當今的深度學習領域&#xff0c;卷積神經網絡&#xff08;CNN&#xff09;已經成為圖像分類任務的主流方法。然而&#xff0c;隨著網絡深度和復雜度的增加&#xff0c;計算資源的消耗也顯著增加&#xff0c;特別是在移動設備和嵌入式系統中&#xff0c;這種資源限制尤為突出。…

25計算機考研,這些學校雙非閉眼入,性價比超高!

計算機考研&#xff0c;好的雙非院校也很多&#xff01; 對于一些二本準備考研的同學來說&#xff0c;沒必要一直盯著985/211這些院校&#xff0c;競爭激烈不說&#xff0c;容易當陪跑&#xff0c;下面這些就是不錯的雙非院校&#xff1a; 燕山大學南京郵電大學南京信息工程大…

WPS-Word文檔表格分頁

一、問題描述 這種情況不好描述 就是像這種表格內容&#xff0c;但是會有離奇的分頁的情況。這種情況以前的錯誤解決辦法就是不斷地調整表格的內容以及間隔顯得很亂&#xff0c;于是今天去查了解決辦法&#xff0c;現在學會了記錄一下避免以后忘記了。 二、解決辦法 首先記…

《昇思25天學習打卡營第5天 | mindspore 網絡構建 Cell 常見用法》

1. 背景&#xff1a; 使用 mindspore 學習神經網絡&#xff0c;打卡第五天&#xff1b; 2. 訓練的內容&#xff1a; 使用 mindspore 的 nn.Cell 構建常見的網絡使用方法&#xff1b; 3. 常見的用法小節&#xff1a; 支持一系列常用的 nn 的操作 3.1 nn.Cell 網絡構建&…

【FFmpeg】關鍵結構體的初始化和釋放(AVFormatContext、AVIOContext等)

目錄 1.AVFormatContext1.1 初始化&#xff08;avformat_alloc_context&#xff09;1.2 釋放&#xff08;avformat_free_context&#xff09; 2.AVIOContext2.1 初始化&#xff08;avio_alloc_context&#xff09;2.2 釋放&#xff08;avio_context_free&#xff09; 3. AVStre…

8.SQL注入-基于insert,update利用案例

SQL注入-基于insert/update利用案例 sql語句正常插入表中的數據 insert into member(username,pw,sex,phonenum,address,email) values(xiaoqiang,1111,1,2,3,4); select * from member;例如插入小強數據&#xff0c;如圖所示&#xff1a; 采用or這個運算符&#xff0c;構造…