久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔
站長百科 | 數(shù)字化技能提升教程 數(shù)字化時(shí)代生存寶典
首頁
數(shù)字化百科
電子書
建站程序
開發(fā)
服務(wù)器
辦公軟件
開發(fā)教程
服務(wù)器教程
軟件使用教程
運(yùn)營教程
熱門電子書
WordPress教程
寶塔面板教程
CSS教程
Shopify教程
導(dǎo)航
程序頻道
推廣頻道
網(wǎng)賺頻道
人物頻道
網(wǎng)站程序
網(wǎng)頁制作
云計(jì)算
服務(wù)器
CMS
論壇
網(wǎng)店
虛擬主機(jī)
cPanel
網(wǎng)址導(dǎo)航
WIKI使用導(dǎo)航
WIKI首頁
最新資訊
網(wǎng)站程序
站長人物
頁面分類
使用幫助
編輯測試
創(chuàng)建條目
網(wǎng)站地圖
站長百科導(dǎo)航
站長百科
主機(jī)偵探
IDCtalk云說
跨境電商導(dǎo)航
WordPress啦
站長專題
網(wǎng)站推廣
網(wǎng)站程序
網(wǎng)站賺錢
虛擬主機(jī)
cPanel
網(wǎng)址導(dǎo)航專題
云計(jì)算
微博營銷
虛擬主機(jī)管理系統(tǒng)
開放平臺(tái)
WIKI程序與應(yīng)用
美國十大主機(jī)
編輯“
堆棧
”
人物百科
|
營銷百科
|
網(wǎng)賺百科
|
站長工具
|
網(wǎng)站程序
|
域名主機(jī)
|
互聯(lián)網(wǎng)公司
|
分類索引
尋找
(
討論
|
貢獻(xiàn)
)
2012年5月5日 (六) 11:15的版本
(
差異
)
←上一版本
|
最后版本
(
差異
) |
下一版本→
(
差異
)
跳轉(zhuǎn)至:
導(dǎo)航
、?
搜索
警告:您正在編輯的是本頁面的舊版本。
如果您發(fā)布該更改,該版本后的所有更改都會(huì)丟失。
警告:
您沒有登錄。如果您做出任意編輯,您的IP地址將會(huì)公開可見。如果您
登錄
或
創(chuàng)建
一個(gè)賬戶,您的編輯將歸屬于您的用戶名,且將享受其他好處。
反垃圾檢查。
不要
加入這個(gè)!
'''堆棧'''(英文:stack),也可直接稱棧。在[[計(jì)算機(jī)科學(xué)]]中,是一種特殊的串行形式的[[數(shù)據(jù)結(jié)構(gòu)]],它的特殊之處在于只能允許在鏈結(jié)串行或陣列的一端(稱為堆棧頂端指標(biāo),英文為top)進(jìn)行加入資料(push)和輸出資料(pop)的運(yùn)算。另外堆棧也可以用一維陣列或連結(jié)串行的形式來完成。堆棧的另外一個(gè)相對(duì)的操作方式稱為佇列。由于堆棧數(shù)據(jù)結(jié)構(gòu)只允許在一端進(jìn)行操作,因而按照后進(jìn)先出(LIFO, Last In First Out)的原理運(yùn)作。它是一種存儲(chǔ)部件,即[[數(shù)據(jù)]]的寫入跟讀出不需要提供地址,而是根據(jù)寫入的順序決定讀出的順序。 堆棧數(shù)據(jù)結(jié)構(gòu)使用兩種基本操作:推入(push)和彈出(pop) *推入(push):將數(shù)據(jù)放入堆棧的頂端(陣列形式或串行形式),堆棧頂端top指標(biāo)加一。 *彈出(pop):將頂端數(shù)據(jù)資料輸出(回傳),堆棧頂端資料減一。 ==簡介== [[動(dòng)態(tài)數(shù)據(jù)]]區(qū)一般就是“堆?!??!皸?stack)”和“堆(heap)”是兩種不同的動(dòng)態(tài)數(shù)據(jù)區(qū),棧是一種線性結(jié)構(gòu),堆是一種鏈?zhǔn)浇Y(jié)構(gòu)。進(jìn)程的每個(gè)線程都有私有的“?!?,所以每個(gè)線程雖然[[代碼]]一樣,但本地變量的數(shù)據(jù)都是互不干擾。一個(gè)堆??梢酝ㄟ^“基地址”和“棧頂”地址來描述。全局變量和靜態(tài)變量分配在靜態(tài)數(shù)據(jù)區(qū),本地變量分配在動(dòng)態(tài)數(shù)據(jù)區(qū),即堆棧中。[[程序]]通過堆棧的基地址和偏移量來訪問本地變量。 ==堆棧原理== 堆棧是一種執(zhí)行“后進(jìn)先出”[[算法]]的[[數(shù)據(jù)結(jié)構(gòu)]]。 它是在內(nèi)存中開辟一個(gè)存儲(chǔ)區(qū)域,[[數(shù)據(jù)]]一個(gè)一個(gè)順序地存入(也就是“ 推入——push”)這個(gè)區(qū)域之中。有一個(gè)地址指針總指向最后一個(gè)壓入堆棧的數(shù)據(jù)所在的數(shù)據(jù)單元,存放這個(gè)地址指針的寄存器就叫做堆棧指示器。開始放入數(shù)據(jù)的單元叫做“棧底”。數(shù)據(jù)一個(gè)一個(gè)地存入,這個(gè)過程叫做“壓?!?。在壓棧的過程中,每有一個(gè)數(shù)據(jù)壓入堆棧,就放在和前一個(gè)單元相連的后面一個(gè)單元中,堆棧指示器中的地址自動(dòng)加1。讀取這些數(shù)據(jù)時(shí),按照堆棧指示器中的地址讀取數(shù)據(jù),堆棧指示器中的地址數(shù)自動(dòng)減1。這個(gè)過程叫做“彈出pop”。 ==堆棧分類== *'''陣列堆棧''' <pre>#include <stdio.h> #include <stdlib.h> /*堆疊資料結(jié)構(gòu)*/ struct Stack { int Array[10];//陣列空間 int Top;//堆疊頂端指標(biāo) }; /*檢查堆疊是否為空*/ bool stack_empty(Stack *Stack1) { if(Stack1->Top==0) { return true; } else { return false; } } /*推入資料*/ void push(Stack *Stack1,int x) { Stack1->Top=Stack1->Top+1; Stack1->Array[Stack1->Top]=x; } /*彈出資料*/ int pop(Stack *Stack1) { if(stack_empty(Stack1)) { printf("underflow"); } else { Stack1->Top=Stack1->Top-1; return Stack1->Array[Stack1->Top+1]; } } int main() { struct Stack *Stack1=(struct Stack *)malloc(sizeof(struct Stack));//宣告資料結(jié)構(gòu)空間 Stack1->Top=0;//初始化 push(Stack1,3);//推入3 push(Stack1,4);//推入4 push(Stack1,1);//推入1 push(Stack1,10);//推入10 printf("%d ",pop(Stack1));//彈出10 printf("%d ",pop(Stack1));//彈出1 printf("%d ",pop(Stack1));//彈出4 system("pause"); }</pre> *'''串行堆棧''' <pre>/*鏈棧的結(jié)構(gòu)定義*/ typedef struct { SLink top; // 棧頂指針 int length; // 棧中元素個(gè)數(shù) }Stack; void InitStack ( Stack &S ) { // 構(gòu)造一個(gè)空棧 S S.top = NULL; // 設(shè)棧頂指針的初值為"空" S.length = 0; // 空棧中元素個(gè)數(shù)為0 } // InitStack /*能否將鏈棧中的指針方向反過來,不行,如果反過來的話,刪除棧頂元素時(shí),為修改其前驅(qū)指針,需要從棧底一直找到棧頂。*/ void Push ( Stack &S, ElemType e ) { // 在棧頂之上插入元素 e 為新的棧頂元素 p = new LNode; // 建新的結(jié)點(diǎn) if(!p) exit(1); // 存儲(chǔ)分配失敗 p -> data = e; p -> next = S.top; // 鏈接到原來的棧頂 S.top = p; // 移動(dòng)棧頂指針 ++S.length; // 棧的長度增1 } // Push /*在鏈棧的類型定義中設(shè)立"棧中元素個(gè)數(shù)"的成員是為了便于求得棧的長度。*/ bool Pop ( Stack &S, SElemType &e ) { // 若棧不空,則刪除S的棧頂元素,用 e 返回其值, // 并返回 TRUE;否則返回 FALSE if ( !S.top ) return FALSE; else { e = S.top -> data; // 返回棧頂元素 q = S.top; S.top = S.top -> next; // 修改棧頂指針 --S.length; // 棧的長度減1 delete q; // 釋放被刪除的結(jié)點(diǎn)空間 return TRUE; } } // Pop </pre> ==相關(guān)詞條== *[[數(shù)據(jù)]] *[[數(shù)據(jù)結(jié)構(gòu)]] *[[內(nèi)存]] *[[程序]] *[[算法]] ==參考來源== *http://zh.wikipedia.org/wiki/%E5%A0%86%E6%A0%88#.E5.A0.86.E7.96.8A.E7.9A.84.E6.87.89.E7.94.A8 *http://blog.sina.com.cn/s/blog_4127ebcb0100096r.html *http://baike.baidu.com/view/93201.htm [[category:數(shù)據(jù)結(jié)構(gòu)|D]]
摘要:
請(qǐng)注意,您對(duì)站長百科的所有貢獻(xiàn)都可能被其他貢獻(xiàn)者編輯,修改或刪除。如果您不希望您的文字被任意修改和再散布,請(qǐng)不要提交。
您同時(shí)也要向我們保證您所提交的內(nèi)容是您自己所作,或得自一個(gè)不受版權(quán)保護(hù)或相似自由的來源(參閱
Wordpress-mediawiki:版權(quán)
的細(xì)節(jié))。
未經(jīng)許可,請(qǐng)勿提交受版權(quán)保護(hù)的作品!
取消
編輯幫助
(在新窗口中打開)
取自“
http://kktzf.com.cn/wiki/堆棧
”