棧的順序存儲結構及及其實現
阿新 • • 發佈:2017-09-21
數據結構 棧
由於棧是線性結構的一種,所以,棧也可以通過順序存儲結構實現。
因為,線性表的順序存儲結構是通過數組實現的,所以,棧的順序存儲結構也通過數組實現。不可避免的,要設置棧的最大存儲空間。因為,棧只允許在棧頂進行元素的插入與刪除操作,所以需要一個指向棧頂的變量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
棧的順序存儲結構及及其實現