數據結構之棧(1)——順序棧


棧作為一種特殊的線性表,在計算機中有順序儲存結構和鏈式存儲結構兩種存儲結構,根據這個我們把棧分為順序棧鏈棧

順序棧

棧頂:用top來動態地表示棧頂元素在順序棧中的位置,當top=-1時表示棧為空

這個是棧這個數據類型的定義

typedef char ElemTypeStack;
typedef struct{
        ElemTypeStack elem[MAXSIZE];
        int top;
}FirStack;

用一個數組來存儲數據,對應的下標表示他在棧中的位置,top表示棧頂元素對應的下標,若棧為空,則top=-1

 

棧的初始化

void Init(FirStack *s)
{
    s->top=-1;
} 

我們用一個順序棧指針來表示一個順序棧,初始化一個順序棧為空時,我們設置他的top值為-1

 

 

順序棧的入棧操作

復制代碼
//入棧
bool PushStack(FirStack *s,ElemTypeStack x)
{
    if(s->top==MAXSIZE-1)
    return false;
    else
    {
        (s->top)++;
        s->elem[s->top]=x;
        return true;
    }
} 
復制代碼

 

入棧時,首先應檢查棧是否已滿,若未滿,則top自增,並將x置入棧頂

上溢:若棧已滿,還要進棧

 

 

順序棧的出棧

復制代碼
bool PopStack(FirStack *s,ElemTypeStack x)
{
    if(s->top==-1)
    return false;
    else
    {
        x=s->elem[s->top];
        s->top--;
        return true;
    }
}
復制代碼

首先應檢查棧是否為空,若未空,則將棧頂元素的值賦給x,然后top自減

下溢:若棧為空還要出棧,則會發生棧的下溢

 

順序棧之讀棧頂元素

//讀棧頂元素
bool GetTop(FirStack *s,ElemTypeStack x)
{
	if(s->top==-1)
	return false;
	else
	{
		x=s->elem[s->top];
		return true;
	}
} 

  讀棧頂元素之前,先判斷棧是否為空,若不為空,則將棧頂元素賦值給x

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM