首页 > 代码库 > 线性表之栈的数组实现

线性表之栈的数组实现

#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;

}


本文出自 “简答生活” 博客,转载请与作者联系!

线性表之栈的数组实现