福州培訓之資料結構 鍊錶,棧 (2月7日)

2021-08-15 11:40:46 字數 1768 閱讀 1768

今天呢,換了個老師講,大部分都聽懂了,可能是內容比較簡單的原因吧

首先,怎麼學寫程式:

程式(programming)=資料結構(data structure)+演算法(algorithm)

沒有天生前後順序關係的「陣列」,記錄乙個元素的後乙個元素

[反向鍊錶,雙向鍊錶,迴圈鍊錶等]

特點:1.資料存在陣列裡

2.對每乙個資料要記錄後乙個元素的下標(可按需求記錄前乙個)

3.記錄每乙個鍊錶的第乙個元素的下標(可按需求記錄最後乙個)

遍歷:[code]

假設遍歷鍊錶10

for (i=first[10];i!=0;i=next[i])

cout插入元素:

1.找到要插入的前乙個元素a;

2.把要插入的資料x對應的「後乙個元素的下標」改為資料a對應的「後乙個元素的下標」;

3.把資料a對應的「後乙個元素的下標」改為要插入的元素的下標;

[code]

...通過遍歷等方式找到a,假如a,x,c的下標為pa,px,pc。

next[px]=next[pa];

next[pa]=px;

刪除元素:

1.找到要刪除的資料前一資料a;

2.把資料a對應的"後乙個元素的下標"改為要刪除元素的「後乙個元素的下標」

3.把要刪除的資料x對應的「後乙個元素的下標」改為空。

[code]

...通過遍歷等方式找到a,假如a,x,c的下標為pa,px,pc。

next[pa]=next[px];

next[px]=0;

特點:

1.資料存在陣列中,陣列的大小即棧容量大小

2.用變數top記錄棧頂元素

3.以陣列形式存放乙個棧(int s[maxsize])

4.棧空時:top=0;

5.棧滿是:top=maxsize-1

6.top為棧頂元素的下標。通過訪問s[top]取棧頂元素

將元素進棧,出棧:

1.訪問當前棧頂元素:code

2.新元素入棧:code

3.棧頂元素出棧:code

例題:表示式求值

description:給定乙個只含加法和乘法的算術表示式,求表示式的值。

input:輸入僅有一行,為需要你計算的表示式,表示式中只含數字、"+"和「*」,

且沒有括號,所有參與運算的數字均為0到2的31次方-1之間的數。

output:輸出只有一行,表示這個表示式的值的後四位

注意:當答案長度多於4位時,請只輸出表示式後四位

limitamion:長度不超過10000.

source:noip2013pjt2

思路:顯然,本題考查兩方面:表示式運算處理和大數字運算

判斷下乙個將要處理的元素

若它是數字,則直接存入數字棧棧頂;

若它是符號,則將它於符號棧頂符號比較,若優先順序大於棧頂符號,則直接壓入符號棧,

若優先值小於或等於棧頂符號,則把符號棧棧頂元素取出,並取出數字棧棧頂兩個數字運算,並把結果存回數字棧,重複上述過程直到新的符號優先順序大於棧頂符號或棧空。

最終數字棧中儲存的唯一數字,就是表示式運算結果。

好了,今天的部落格先講到這裡,欲知後事如何,請看下篇!

福州培訓之資料結構 佇列,堆 (2月8日)

今天其實講了另外的東西,但我沒聽懂,所以不寫了,把昨天的內容補一補,今天的之後自己體悟一下再來總結.首先佇列 先進先出 資料訪問 佇列顧名思義就像排隊一樣 更形象一點,就像只能容納乙個人的獨木橋 佇列是一種 先進先出 的容器 先存進佇列的元素比後進佇列的元素先取出 必須在先進佇列的元素取出後,後入隊...

資料結構之鍊錶2

繼上文 資料結構之鍊錶1之後,本文將繼續講解鍊錶。迴圈單鏈表是另一種形式的單鏈表。它的特點是表中的最後乙個結點的指標域指向頭結點,整個鍊錶形成乙個環。因此,從迴圈單鏈表中任一結點出發均可找到表中其他結點,如下圖。類似的,還可以有多重鏈的迴圈鍊錶。迴圈單鏈表的底層實現 迴圈單鏈表的操作與單鏈表的實現基...

資料結構 2 鍊錶

填補那些模稜兩可的後知後覺 public class linkedlist public node e e public node override public string tostring private node dummyhead 虛擬頭節點 private int size 元素個數 p...