1. 程式人生 > 實用技巧 >資料結構 - 棧的實現與操作

資料結構 - 棧的實現與操作

程式碼:

#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指標先減。