1. 程式人生 > 實用技巧 >棧的順序儲存結構

棧的順序儲存結構

定義

棧是一種限定僅在表尾進行插入或刪除操作的線性表。允許插入或刪除的一端為棧頂,另一端為棧底。特點是先進後出( first in last out )。棧的插入操作叫做入棧,棧的刪除操作叫做出棧。

結構表示

typedef int Elemtype;
typedef struct
{
    Elemtype data[size];
    int top;
} Stack;

操作集及實現

/**

*C語言

*/

入棧

int push( Stack *s , Elemtype e )
{
    if( s->top == size - 1 )
    {
        return
0; } s->top++; s->data[s->top] = e; return 1; }

出棧

int pop( Stack *s , Elemtype *e )
{
    if( s->top == -1 )
    {
        return 0;
    }
    *e = s->data[s->top];
    s->top--;
    
    return 1;
}

遍歷

void display( Stack *s )
{
    int i;
    for( i = 0
; i <= s->top ; i++ ) { printf("%d ",s->data[i]); } printf("\n"); }

全部程式碼

#include<stdio.h>
#define size 20

//棧的結構
typedef int Elemtype;
typedef struct
{
    Elemtype data[size];
    int top;
} Stack;

//操作集
//初始化 
void init( Stack *s )
{
    s->top = -1;
}

//入棧操作 
int push( Stack *s , Elemtype e ) { if( s->top == size - 1 ) { return 0; } s->top++; s->data[s->top] = e; return 1; } //出棧操作 int pop( Stack *s , Elemtype *e ) { if( s->top == -1 ) { return 0; } *e = s->data[s->top]; s->top--; return 1; } void display( Stack *s ) { int i; for( i = 0 ; i <= s->top ; i++ ) { printf("%d ",s->data[i]); } printf("\n"); } int main() { Stack L; int n; init(&L); push(&L,5); push(&L,6); push(&L,7); display(&L); pop(&L,&n); display(&L); pop(&L,&n); display(&L); return 0; }