堆栈的实现

 堆栈
后进先出
基本的操作有:push(入堆) pop(弹出)
入堆:将数据放入到堆栈的顶部

弹出:将顶端的数据输


#include<stdio.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct Stk
{
  int Array[10];
  int Top;
} Stack;
int stack_empty(Stack *Stack1)
{
  if(Stack1->Top==0)
  {
    return 1;            
  }     
  else
  {
    return 0;    
  }
}

void push(Stack *Stack1,int x)
{
  Stack1->Top=Stack1->Top+1;
  Stack1->Array[Stack1->Top]=x;         
}

int pop(Stack *Stack1)
{
  if(stack_empty(Stack1))
  {
    printf("underflow");
  }
  else
  {
    Stack1->Top=Stack1->Top-1;
    return Stack1->Array[Stack1->Top+1];    
  }

}
int main()
{
  Stack *Stack1=(Stack *)malloc(sizeof(Stack));
  Stack1->Top=0;
  push(Stack1,3);
  push(Stack1,4);
  push(Stack1,1);
  push(Stack1,10);
  printf("%d ",pop(Stack1));
  printf("%d ",pop(Stack1));
  printf("%d ",pop(Stack1));
}


如果不想用数组预先分配好内存空间,Stack 结构体内用×Array指针来表示

可以更改一下代码:“

#define N 10
typedef struct Stk
{
  int *Array;
  int Top;
} Stack;

int main()
{
  Stack *Stack1=(Stack *)malloc(sizeof(Stack));
  Stack1->Array = (int *)malloc(sizeof(int) * N);
  Stack1->Top=0;
  push(Stack1,3);
  push(Stack1,4);
  push(Stack1,1);
  push(Stack1,10);
  printf("%d ",pop(Stack1));
  printf("%d ",pop(Stack1));
  printf("%d ",pop(Stack1));
}

不过这种也是预先分配好内存,只不过先分配结构体的内存,然后分配结构体内部Array的内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值