1. 程式人生 > >棧基本知識點及基本運算的實現

棧基本知識點及基本運算的實現

什麼是棧:

      棧是一種只能在一端插入或刪除的線性表。在表中,允許進行插入或刪除的一端叫做棧頂。(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;

}