线性表之栈的数组实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性表之栈的数组实现相关的知识,希望对你有一定的参考价值。

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

}


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

以上是关于线性表之栈的数组实现的主要内容,如果未能解决你的问题,请参考以下文章

线性表之栈

java数据结构与算法之栈(Stack)设计与实现

python线性数据结构之栈的实现

java线性表之顺序表实现

线性表之何时使用ArrayListLinkedList?

数据结构之栈