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...