線性表之棧的數組實現

#include<stdio.h>

#include<malloc.h>

typedef struct node

{

int *pBase;

int len;//數組最大容納長度

int top;//數組有效長度

}stack,*Stack;

void initStack(Stack,int);

void push(Stack,int);

void pop(Stack,int *);

bool stackEmpty(Stack);

bool stackFull(Stack);

void main()

{

stack stack;

initStack(&stack,6);

printf("開始壓棧\n");

//壓棧

push(&stack,2);

push(&stack,3);

push(&stack,4);

push(&stack,5);

//出棧

printf("開始出棧\n");

int val;

pop(&stack,&val);

pop(&stack,&val);

pop(&stack,&val);

pop(&stack,&val);

}

void initStack(Stack stack,int len)

{

stack->pBase=(int *)malloc(sizeof(int)*len);// 注意這地方初始化要分配內存。

stack->len=len;

stack->top=-1;//注意這地方座標應當指明爲-1

}

void push(Stack stack,int val)

{

if(stackFull(stack))

{

printf("棧已經滿了,無法壓棧");

return;

}

stack->top++;

stack->pBase[stack->top]=val;

}

bool stackFull(Stack stack)

{

if(stack->len-1==stack->top)

return true;

else

return false;

}

void pop(Stack stack,int *val)

{

if(stackEmpty(stack))

{

printf("當前棧已經爲空,無法出棧");

return;

}

*val=stack->pBase[stack->top];

printf("%d  ",*val);

stack->top--;


}

bool stackEmpty(Stack stack)

{

if(stack->top==-1)

return true;

else

return false;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章