码迷,mamicode.com
首页 > 编程语言 > 详细

线性表之栈的数组实现

时间:2016-10-23 15:17:52      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:线性表之栈的数组实现

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

}


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

线性表之栈的数组实现

标签:线性表之栈的数组实现

原文地址:http://1464490021.blog.51cto.com/4467028/1864688

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!