順序棧:利用一組地址連續(xù)的存儲單元依次存放自棧底到棧頂?shù)臄?shù)據(jù)元素,同時由于棧操作的特殊性,還必須附設(shè)一個位置指針top(棧頂指針)來動態(tài)地指示棧頂元素在順序棧中的位置。通常以top=-1表示空棧。
代碼如下:
#include<iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
//順序棧的存儲結(jié)構(gòu)
#define Stack_Size 50 //設(shè)棧中元素個數(shù)為50
typedef struct
{
int elem[Stack_Size];//用來存放棧中元素的一維數(shù)組
int top;//用來存放棧頂元素的下標,top=-1表示空棧
}SeqStack;
//初始化順序棧
void InitStack(SeqStack *S)
{
S->top = -1;//構(gòu)造一個空棧
}
//順序棧進棧運算,首先判斷棧是否已滿,若棧已滿,還要進棧就會發(fā)生上溢
int Push(SeqStack *S,int x)//將x置入S棧新棧頂
{
if (S->top == Stack_Size - 1)//棧已滿
{
return FALSE;
}
S->top++;
S->elem[S->top] = x;//把x入棧
return TRUE;
}
//順序棧出棧運算,首先判斷棧是否為空,若棧空,還要出棧就會發(fā)生下溢
int Pop(SeqStack *S, int *x)//將S棧頂元素彈出,放到x所指的存儲空間中帶出
{
if (S->top == - 1)//棧為空
{
return FALSE;
}
else
{
*x = S->elem[S->top];
S->top--;//修改棧頂指針
return TRUE;
}
}
//順序棧讀棧頂元素運算
int GetPop(SeqStack *S, int *x)//將棧S棧頂元素讀出,放到x所指的存儲空間中,棧頂指針保持不變
{
if (S->top == -1)//棧為空
{
return FALSE;
}
else
{
*x = S->elem[S->top];
return TRUE;
}
}
注意:在實現(xiàn)GetPop操作時,也可將參數(shù)SeqStack *S改為SeqStack S,將傳地址方式改為傳值方式。傳值比傳地址容易理解,但傳地址比傳值更節(jié)省空間與時間。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享題目:順序棧的基本操作:初始化、進棧、出棧、讀棧頂元素-創(chuàng)新互聯(lián)
標題URL:http://www.chinadenli.net/article44/igghe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)站維護、虛擬主機、網(wǎng)站制作、全網(wǎng)營銷推廣、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容