棧的順序儲存結構
阿新 • • 發佈:2020-08-08
定義
棧是一種限定僅在表尾進行插入或刪除操作的線性表。允許插入或刪除的一端為棧頂,另一端為棧底。特點是先進後出( 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 ) { return0; } 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; }