1. 程式人生 > >棧的順序存儲結構及及其實現

棧的順序存儲結構及及其實現

數據結構 棧

由於棧是線性結構的一種,所以,棧也可以通過順序存儲結構實現。

因為,線性表的順序存儲結構是通過數組實現的,所以,棧的順序存儲結構也通過數組實現。不可避免的,要設置棧的最大存儲空間。因為,棧只允許在棧頂進行元素的插入與刪除操作,所以需要一個指向棧頂的變量top。那麽棧的存儲結構:

typedef int SElemType;

typedef struct{

    SElemType data[MAXSIZE];
    int top;
}SqStack;

接著,就是插入一個新的元素e,也就是進棧操作push。向棧頂插入一個元素,首先要判斷棧的存儲空間是否充足,如果以已經沒有存儲空間了,則入棧失敗。代碼如下:

Status Push ( SqStack *S, SElemType e )
{
    if ( S->top == MAXSIZE - 1 )
        return ERROR;
    
    S->top++;
    S->data[S->top] = e;

}

如果要刪除一個操作,首先要判斷棧是否為空,如果不為空,則刪除有效,若為空,則刪除失敗。接著,只要top--就行了。代碼如下:

Status Pop ( SqStack *S, SElemType *e )
{
    if ( S->top == -1 )
    return ERROR;
    
    *e = S->data[S->top];
    S->top--;

    return OK;
}

因為沒有涉及到循環,所以,時間復雜度均為O(1)。

本文出自 “梵高說我腦子有病” 博客,請務必保留此出處http://chen0547.blog.51cto.com/12489941/1967312

棧的順序存儲結構及及其實現