棧基本知識點及基本運算的實現
什麼是棧:
棧是一種只能在一端插入或刪除的線性表。在表中,允許進行插入或刪除的一端叫做棧頂。(ps:我覺得棧就是一個數組,棧頂就是下標)表的另一端稱為棧底,當棧中沒有元素時稱為空棧,棧的插入稱為入棧或進戰,棧中資料元素的刪除稱為出棧或退棧。
棧的特點:
後進先出(Last in First Out ),就是說後進的資料元素先出棧。每次進棧的資料元素都放在原來棧頂元素之前成為新的棧頂元素,每次出棧的資料元素都是當前棧頂元素。
棧的基本形式
ADK Stack
{
資料物件;
棧頂指標;
}
棧空條件;
s->top==-1
棧滿條件:
s->top==maxsize-1
元素的進棧操作
先將棧頂指標加一,然後將元素放在棧頂指標處
元素出棧操作
先將棧頂元素取出,然後棧頂指標減一
棧的基本運算的實現
建立棧
void InStack(SqStack* &s)
{
s=(SqStack*)malloc(sizeof(SqStack));
s->top=-1;
}
銷燬棧
void DestoryStack(SqStack* &s)
{
free(s);
}
判斷棧是否為空
bool StackEmpty(SqStack* &s)
{
return (s->top==-1);
}
進棧
bool Push(SqStack* &s,int e)
{
s->top++;
s->data[s->top]=e;
return true;
}
出棧
bool Pop(SqStack* &s,int e)
{
if(s->top==-1)
return false;
e=s->data[s->top];
s->top--;
return true;
}
取棧頂元素
bool GetTop(SqStack* &s,int e)
{
if(s->top==-1)
return false;
e=s->data[s->top];
s->top--;
return true;
}