用List實現Stack基本功能

2021-06-19 20:15:29 字數 1708 閱讀 7678

stack是一種特殊的序列形式的資料結構。

特點:1、只允許在棧頂壓入新元素(push);

2、只允許先由棧頂元素輸出,也就是後進先出(pop);

下面我打算用list來實現stack最簡單的功能。

我的思路:

根據list的知識,允許在list裡面刪除,插入元素,而stack不過是刪除和插入的元素都是最後乙個而已(top),所以,我想,stack不過是list的乙個更具體的特殊功能的list。

首先,建立list。

//item

struct itemtype

;//-------------------

//list

struct list

;

item是自定義資料型別,裡面可以有很多基本資料型別,例如int,float之類的。目前我只定義了乙個int型別的。

接下來,定義乙個stack類。

裡面的公共介面也就是功能,看函式名字可以意會。私有資料有stack的大小,還有頭指標,尾指標。

//stack

class stack

;

接下來的事情也就是list的事情了,不過其中的很多細節還是要注意的。比如,stack已經為null了,那麼再執行pop彈出函式就應該輸出警示stack為null。同樣的,超出長度也應該提示超出資訊。

源**:

#includeusing namespace std;

//-------------------

//item

struct itemtype

;//-------------------

//list

struct list

;//-------------------

//stack

class stack

;//----------------------

//void stack::stack_init(int init_size)

if(i == init_size)

}}//---------------------------

//void stack::stack_push(int item)

else

}//--------------------------

//int stack::stack_pop()

t = top->item.num;

delete(top);

top = temp;

list_size--;

return t;

}//---------------------------

//void stack::stack_export()

}//----------------------------

//void stack::stack_destroy()

delete(top);

head = top;

list_size = 0;

}//--------------------------------

//int stack::stack_length()

if(if == false)

case 2:

case 3:

{cout<<"pop num: "<< s.stack_pop()<

C C 程式設計基本功

c c 程式設計基本功 c 其內容精深博大,任何一塊都信手拈來者不多,究其精者更不多,不論何其原因,最重要一點就是其基本功之不紮實,對基礎性東西不加以精深研究。我也是一樣,經過幾輪經典的面試,讓我痛改以前的不紮實的作風,以此來磨礪自己。一 記憶體管理篇 乙個由c c 編譯的程式占用的記憶體分為以下幾...

基本功練習 2 26

型別轉換 先看下面一段程式,這段程式摘自 c專家程式設計 如果是有這樣一段程式的話,你永遠無法知道x的值到底是多少,因為這句賦值語句x array d 1 根本不會執行。原因在哪?經過除錯發現程式執行到if語句進行判斷完之後,直接跳過下面一條語句的執行。下面來分析一下原因,因為sizeof求算型別大...

機器學習基本功

1 回歸模型 重點關注xgboost 注 introduction to statistical learning的2 7章 2 分類模型 統計學習方法 3 神經網路 a 普通的ann b 處理影象的cnn c 處理文字和語音的rnn lstm 4 資料壓縮 視覺化 流行學習 manifold le...