資料結構 - 棧的實現與操作
阿新 • • 發佈:2020-10-21
程式碼:
#include <stdio.h> #include <stdlib.h> #include<malloc.h> typedef struct stack{ int *top; int *base; int size; }stack,*Pstack; init_stack(Pstack p,int size){ p->base=(Pstack)malloc(sizeof(stack)*size); p->top=p->base; p->size=size; } push_stack(Pstack p,int data){ *p->top=data; p->top++; } pop_stack(Pstack p){ int val; val=*--p->top; printf("出棧:%d\n",val); } travel_stack(Pstack p){ while(p->top!=p->base){ printf("值:%d\n",*(p->top-1)); p->top--; } } int main() { stack p; init_stack(&p,10); travel_stack(&p); push_stack(&p,11); push_stack(&p,22); push_stack(&p,33); push_stack(&p,44); pop_stack(&p); pop_stack(&p); travel_stack(&p); }
結果:
唯一要注意的是棧的出棧和入棧時指標是先增還是後增,這直接影響程式結果。
眾所周知,入棧時,top指標後增,出棧時top指標先減。