国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

算法學習之數據結構線性表、堆、棧

huaixiaoz / 1565人閱讀

摘要:棧底是固定的,而棧頂浮動的如果棧中元素個數為零則被稱為空棧。入棧將數據保存到棧頂。鏈棧鏈棧是指棧的鏈式存儲結構,是沒有附加頭節點的運算受限的單鏈表,棧頂指針是鏈表的頭指針。

一、喜歡單挑線性表 1.線性表的特性

線性表是一個線性結構,它是一個含有n≥0個節點的有限序列。在節點中,有且僅有一個開始節點沒有前驅并有一個后繼節點,有且僅有一個終端節點沒有后繼并有一個前驅節點。其他的節點都有且僅有一個前驅和一個后繼節點。通??梢园岩粋€線性表表示成一個線性序列:k1,k2,…,kn,其中k1是開始節點,kn是終端節點。

1.1 線性結構的特征

在編程領域中,線性結構具有如下兩個基本特征。
(1)集合中必存在唯一的一個“第一元素”和唯一的一個“最后元素”;
(2)除最后一個元素之外,均有唯一的后繼(后件)和唯一的前驅(前件);
由n(n≥0)個數據元素(節點)a1,a2,…,an組成的有限序列,數據元素的個數n定義為表的長度。當n=0時稱為空表,我們通常將非空的線性表(n>0)記作:
(a1,a2,…an)
數據元素ai(1≦i≦n)沒有特殊含義,大家不必去“剖根問底”的研究它,它只是一個抽象的符號,其具體含義在不同的情況下可以不同。

1.2 線性表的基本操作過程

線性表雖然只是一對一的單挑,但是其操作功能非常強大,具備了很多操作技能。

1.3 線性表的結構特點

均勻性:雖然不同數據表的數據元素是各種各樣的,但同一線性表的各數據元素必須有相同的類型和長度;
有序性:各數據元素在線性表中的位置只取決于它們的序。數據元素之前的相對位置是線性的,即存在唯一的“第一個”和“最后一個”的數據元素,除了第一個和最后一個外,其他元素前面只有一個數據元素直接前趨,后面只有一個直接后繼二、

2.順序表操作

在現實應用中,有兩種實現線性表數據元素存儲功能的方法,分別是順序存儲結構鏈式存儲結構。順序表操作是最簡單的操作線性表的方法,此方式的主要操作功能如下所示。
(1)計算順序表的長度
(2)清空操作
(3)判斷線性表是否為空
(4)判斷順序表是否為滿
(5)附加操作
(6)插入操作
(7)刪除操作
(8)獲取表元
(9)按值進行查找

3.鏈表操作

鏈比順序表要復雜一點,對于同一個數據,它可以和不相鄰的數據發生關系。例如農民通常將收獲的水果賣給商販,商販將收購的水果賣給加工廠。這是一條水果加工產業鏈,可以得出商販是農民的財神、加工廠是商販的財神這一論調。在那一年的某一天,老實的農民發現利潤較低,于是拉著自己的水果不遠萬里的親自賣給了加工廠。這樣農民伯伯獲得了更大的利潤,而商販也不能怎么著,這個產業鏈還得繼續下去。
由此可見,鏈式存儲結構不需要用地址連續的存儲單元來實現,而是通過“鏈”建立起數據元素之間的次序關系。所以它不要求邏輯上相鄰的兩個數據元素在物理結構上也相鄰,在插入和刪除時無需移動元素就而提高了運行效率。鏈式存儲結構主要有單鏈表、循環鏈表、雙向鏈表、靜態鏈表等幾種形式。

二、守規矩的先進先出的隊列 1.隊列基礎

隊列和棧一樣,只允許在斷點處插入和刪除元素,循環隊的入隊算法如下所示。
(1)tail=tail+1;
(2)如果tail=n+1,則tail=1;
(3)如果head=tai,即尾指針與頭指針重合,則表示元素已裝滿隊列,會施行上溢出錯處理;否則Q(tail)=X,結束整個過程,其中X表示新入出元素。

2.鏈隊列和循環隊列

使用C語言定義鏈隊列的格式如下所示。

typedef struct QNode{
ElemType    data;
struct QNode    *next;
}QNode, *QueuePtr;

typedef struct {
QueuePtr     front;         /* 隊頭指針,指向頭元素         */
QueuePtr     rear;        /* 隊尾指針,指向隊尾元素     */
}LinkQueue;
3.隊列的基本操作

(1)初始化隊列Q的目的是創建一個隊列
(2)入隊的目的是將一個新元素添加到隊尾,相當于到隊列最后排隊等候。
(3)出隊的目的是取出隊頭的元素,并同時刪除該元素,使后一個元素成為隊頭。
(4)獲取隊列第1個元素,即將隊頭的元素取出,不刪除該元素,隊頭仍然是該元素。
(5)判斷隊列Q是否為空

4.隊列的鏈式存儲

當使用鏈式存儲結構表示隊列時,需要設置隊頭指針和隊尾指針,這樣做的好處是可以設置隊頭指的針和隊尾的指針。在入隊時需要執行如下三條語句。

s->next=NULL;
rear->next=s;
rear=s;

在C語言中,實現隊列鏈式存儲結構類型的代碼如下所示。

type struct linklist {    //鏈式隊列的節點結構
Elemtype Entry;    //隊列的數據元素類型
struct linklist *next;    //指向后繼節點的指針
}LINKLIST;

typedef struct queue{    //鏈式隊列
LINKLIST *front;    //隊頭指針
LINKLIST *rear;    //隊尾指針
}QUEUE; 
三、后進先出的棧 1.什么是棧

棧允許在同一端進行插入和刪除操作,允許進行插入和刪除操作的一端稱為棧頂(top),另一端稱為棧底(bottom)。棧底是固定的,而棧頂浮動的;如果棧中元素個數為零則被稱為空棧。插入操作一般被稱為進棧(PUSH),刪除操作一般被稱為退棧(POP)。
在棧中有兩種基本操作,分別是入棧和出棧。
(1)入棧(Push)
將數據保存到棧頂。在進行入棧操作前,先修改棧頂指針,使其向上移一個元素位置,然后將數據保存到棧頂指針所指的位置。入棧(Push)操作的算法如下:
①如果TOP≥n,則給出溢出信息,作出錯處理。在進棧前首先檢查棧是否已滿,如果滿則溢出;不滿則進入下一步驟②;
②設置TOP=TOP+1,使棧指針加1,指向進棧地址;
③S(TOP)=X,結束操作,X為新進棧的元素。
(2)出棧(Pop)
將棧頂的數據彈出,然后修改棧頂指針,使其指向棧中的下一個元素。出棧(Pop)操作的算法如下:
①如果TOP≤0,則輸出下溢信息,并實現出錯處理。在退棧之前先檢查是否已為空棧,如果是空則下溢信息,如果不空則進入下一步驟②;
②X=S(TOP),退棧后的元素賦給X;
③TOP=TOP-1,結束操作,棧指針減1,指向棧頂。

2.棧的基本操作 2.1 順序棧

順序棧是棧的順序存儲結構的簡稱,它是一個運算受限的順序表。假設S是SeqStack類型的指針變量,如果棧底位置在向量的低端,則S->data[0]是棧底元素。

2.2鏈棧

鏈棧是指棧的鏈式存儲結構,是沒有附加頭節點的、運算受限的單鏈表,棧頂指針是鏈表的頭指針。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/21853.html

相關文章

  • 基礎算法習之(三):排序

    摘要:奇妙的記憶點不穩定內排序基本思想分為兩步建堆與維持堆的性質首先我們要先理解堆是什么東西堆其實就是一個完全二叉樹我們可以使用順序表存儲一個二叉樹如下圖所示來存儲其中分為最大堆最小堆而最大堆就是上頭大下頭小最小堆則反之明白了堆的定義我們就可以開 奇妙的記憶點: 不穩定 內排序 基本思想: 分為兩步,建堆與維持堆的性質,首先我們要先理解堆是什么東西.堆其實就是一個完全二叉樹,我們可以使用...

    mrli2016 評論0 收藏0
  • 深度習之對抗樣本問題

    摘要:相反深度學習的對抗樣本是由于模型的線性特征。所以通過對抗訓練能夠提高深度學習的對于對抗樣本的抗干擾能力。此外,指出,人類并不會像現代機器學習算法那樣被對抗樣本所影響。 2006 年,Geoffrey Hinton 提出了深度學習。受益于大數據的出現和大規模計算能力的提升,深度學習已然成為最活躍的計算機研究領域之一。深度學習的多層非線性結構使其具備強大的特征表達能力和對復雜任務的建模能力。最近...

    zhichangterry 評論0 收藏0
  • 基礎數據結構算法概念

    摘要:數據結構程序數據結構算法數據結構基本概念數據的邏輯結構反映數據元素之間的關系的數據元素集合的表示。這兩部分信息組成數據元素的存儲映象,稱為結點。 本文涉及更多的是概念,代碼部分請參考之前寫過的 2 篇博客 基于 Javascript 的排序算法 基于 javascript 的基本數據結構和查找算法 本文主要是基礎的數據結構和算法概念,可能部分地方會涉及更高級的算法和算法,具體內容以...

    fsmStudy 評論0 收藏0
  • JavaScript機器習之線性回歸

    摘要:不能用于機器學習太慢幻覺矩陣操作太難有函數庫啊,比如只能用于前端開發開發者笑了機器學習庫都是開發者機器學習庫神經網絡神經網絡自然語言處理卷積神經網絡一系列庫神經網絡深度學習我們將使用來實現線性回歸,源代碼在倉庫。 譯者按: AI時代,不會機器學習的JavaScript開發者不是好的前端工程師。 原文: Machine Learning with JavaScript : Part 1 ...

    gitmilk 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<