妳壹定在學習數據結構。
首先,當妳學習stack的時候,妳需要了解stack的定義以及它是什麽,也就是了解他的思想。
最後體現在代碼上。
棧是FIFO,但實際上是由代碼控制的。
其實妳可以讓他先進先出。
妳只需要明白他的原理。
代碼,妳可以把它理解為壹種與計算對話的語言。
別想那麽復雜。
就像說話壹樣,妳只需要知道妳想說什麽(算法),不必刻意去理解怎麽說(語法)。
給我之前寫的代碼,關於棧,順序棧,實際上是鏈棧。
/*?數據結構-棧?*/
/*?異常的詳細信息尚未處理*/
#包含?& ltiostream & gt
#包含?& ltstdlib.h & gt
#包含?& ltmalloc.h & gt
#定義?len_chu_shi?50?//初始空間大小
#定義?len _曾_賈?10//添加額外空間
#定義?好嗎?0?//正確
#定義?結束了?-2?//
#定義?錯誤?-1?//
使用?命名空間?std
typedef?int?elem _ type//元素類型
typedef?int?function _ type//函數類型
typedef?struct?詹(漢)
{
elem_type?* top//棧頂
elem_type?*基數;?//堆棧底部
int?len?//當前空間大小
}詹;//堆棧結構
函數_類型?Init_zhan(zhan?*考試);//初始化堆棧
函數_類型?Get_top(詹?*考試,elem_type?* e);//獲取堆棧的頂部元素
函數_類型?Add_top(詹?*考試,elem_type?* e);//添加棧頂元素
函數_類型?Delete_top(詹?*考試,?elem_type?* e);//刪除堆棧的頂部元素
int?main(int?argc,char?*argv[])
{
詹?*舉例?=?(詹?*)malloc(sizeof(Zhan));
Init_zhan(示例);
回歸?OK;
}
函數_類型?Init_zhan(zhan?*考試)
{
考試-& gt;基地?=?(elem_type?*)malloc(len _ Chu _ Shi * sizeof(elem _ type));
如果(!考試-& gt;Base)//分配失敗。
退出(結束);
考試-& gt;top?=?考試-& gt;基地;
考試-& gt;萊恩。=?len _ chu _ shi
回歸?OK;
}// - end
函數_類型?Get_top(詹?*考試,elem_type?*e)
{
如果(!考試-& gt;基地)
退出(結束);
*e?=?*(考試->;top?-?1);//不能使用自減運算符,這樣會改變棧頂指針的值。
回歸?OK;
}// - end
函數_類型?Add_top(詹?*考試,elem_type?*e)
{
如果(考試-& gt;萊恩。& lt=?考試-& gt;top?-?考試-& gt;Base)//個人認為,如果?已經”
考試-& gt;基地?=?(elem_type?*)realloc(考試-& gt;基地,(考試->;萊恩。+?len _ Zeng _ Jia)* sizeof(elem _ type));
如果(!考試-& gt;Base)//分配失敗。
退出(結束);
*(考試->;top++)?=?* e;?//先改變棧頂指針的內容,再自行增加棧頂指針。
考試-& gt;萊恩。+=?len _ zeng _ jia
回歸?OK;
}// - end
函數_類型?Delete_top(詹?*考試,?elem_type?*e)
{
如果(!考試-& gt;Base)//空堆棧
退出(結束);
*e?=?*( -考試-& gt;頂);//先遞減棧頂指針,再獲取棧頂指針的內容。
回歸?OK;
}// - end