堆疊(strack)是指這樣一段記憶體,我們它可以理解為乙個筒結構,先放進筒中的資料被後放進筒中的資料「壓住」,只有後放進筒中的資料都取出後,先放進去的資料才能被取出,稱為「後進先出」。堆疊的長度可隨意增加。堆疊結構可用鍊錶實現。設計乙個鍊錶結構需包含兩個成員:乙個存放資料,乙個為指向下乙個節點的指標。當每次有乙個新資料要放入堆疊時,稱為「壓入堆疊」,這時動態建立乙個鍊錶的節點,並連線到鍊錶的結尾;當每次從堆疊中取出乙個資料時,稱為「彈出堆疊」,這意味著從鍊錶的最後乙個節點中取出該節點的資料成員,同時刪除該節點,釋放該節點所佔的記憶體。以下的程式結果直觀地反應了這一特性。
#include
#include
typedef
struct stack
stack;
stack *head,
*pr;
int nodenum =0;
//堆疊節點數暫存器
stack *
createnode
(int num)
;stack *
pushstack
(int num)
;int
popstack
(void);
intmain()
, newnum[5]
, i;
for(i =
0; i <
5; i++
)for
(i =
0; i <
5; i++
)return0;
}stack *
createnode
(int num)
//函式功能:生成乙個新的節點,並為該節點賦初值,返回指向新的節點的指標
p->next =
null
;//為新建的節點指標域賦空指標
p->data = num;
//為新建的節點資料區賦值
return p;
}stack *
pushstack
(int num)
//函式功能:將整型變數num的值壓入堆疊,返回指向鍊錶新節點的指標
else
//如果不是首節點,那麼就將新建節點連到鍊錶的結尾處
return pr;
}int
popstack
(void
)//函式功能:將當前棧頂的資料彈出堆疊,返回從堆疊中彈出的資料
else
} pr->next =
null
;//將末節點的前乙個節點置成末節點
result = p->data;
free
(p);
return result;
}
code::block執行結果: 資料結構與演算法之一
電腦科學是通過使用計算機解決各種問題的研究領域。為了使用計算機解決給出的問題,您需要為其設計演算法。可設計多個演算法來解決特定的問題。提供了最大效率的演算法應用於解決此問題。演算法的效率可通過使用合適的資料結構來改善。資料結構幫助建立簡單 可重用和易於維護的程式。本模組允許學員選擇並實現合適的資料結...
C 儲存資料結構之一List
分類 vc list是雙向迴圈鍊錶,每乙個元素都知道前面乙個元素和後面乙個元素。在stl中,list和vector一樣,是兩個常被使用的容器。和vector不一樣的是,list不支援對元素的任意訪問。list中提供的成員函式與vector類似,不過list提供對錶首元素的操作push front p...
redis 學習之一(資料結構)
儲存物件的兩種方式 儲存序列化之後的物件 jedis.set user liudehua obj getbytes getbytesbyproduct person user liudehua obj getbytes fasdf 不能用這種形式 byte productbytes jedis.ge...