用数组来实现堆栈

package Demo24;

import java.util.Stack;

public class StackTest {
    private int[] date = new int[10];
    private int index;
    public boolean push(int d) {//放入元素入栈
        if(index < date.length) {
            date[index] = d;
            index++;
            return true;
        }//如果该位置大于栈的大小,说明栈已经满了
        System.out.println("栈满了");
        return false;
    }
    public int pop() {//出栈
        int temp = Integer.MAX_VALUE;
        if(index >= 0) {//如果栈内还有元素,直接出栈即可
            index--;
            temp = date[index];

        } else {//栈内没元素,说明栈空了
            System.out.println("栈已经空了");
        }
        return temp;
    }
    public void print() {//打印栈内元素
        for(int i = 0; i < index; i++) {
            System.out.print(date[i] + " ");
        }
        System.out.println();
    }
    public static void main(String[] args) {
        StackTest st = new StackTest();
        st.push(1);
        st.push(2);
        st.push(3);
        st.push(14);
        st.push(5);
        st.push(6);
        st.push(7);
        st.push(8);
        st.push(89);
        st.print();
        System.out.println(st.pop());
        System.out.println(st.pop());
        System.out.println(st.pop());
        System.out.println(st.pop());
        st.print();
        System.out.println(st.pop());
        System.out.println(st.pop());
        System.out.println(st.pop());
        System.out.println(st.pop());
        System.out.println(st.pop());
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C语言中,可以使用数组实现堆栈。下面是一个基于数组存储的堆栈实现代码示例: ```c #define MAXSIZE 100 //定义的最大容量 typedef struct{ int data[MAXSIZE]; //存储数据的数组 int top; //顶指针 }Stack; //初始化 void InitStack(Stack *s){ s->top = -1; //顶指针设为-1,表示为空 } //判断是否为空 int StackEmpty(Stack *s){ if(s->top == -1){ return 1; //为空 } else{ return 0; //不为空 } } //入操作 int Push(Stack *s, int x){ if(s->top == MAXSIZE - 1){ //已满,无法入 return 0; } else{ s->top++; //顶指针加1 s->data[s->top] = x; //将元素x入 return 1; } } //出操作 int Pop(Stack *s, int *x){ if(StackEmpty(s)){ //为空,无法出 return 0; } else{ *x = s->data[s->top]; //取出顶元素 s->top--; //顶指针减1 return 1; } } //获取顶元素 int GetTop(Stack *s, int *x){ if(StackEmpty(s)){ //为空,无法获取顶元素 return 0; } else{ *x = s->data[s->top]; //取出顶元素 return 1; } } ``` 上述代码中,定义了一个结构体Stack,其中包括一个数组data和一个顶指针top。在初始化时,将顶指针设为-1,表示为空。入操作时,首先判断是否已满,如果未满则将元素x插入到顶,并将顶指针加1;出操作时,首先判断是否为空,如果不为空则取出顶元素,并将顶指针减1;获取顶元素时,也需要判断是否为空,如果不为空则取出顶元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_努力努力再努力_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值