设计一个栈类 pta java基础练习5

栈(Stack)是一种以“后进先出”的方式存放数据的数据结构。设计实现一个简单的栈来存放整型,完成如下功能:

方法功能
StackOfIntegers()构建一个默认容量为16的空栈
StackOfIntegers(capacity: int)构建一个指定容量的空栈
empty(): boolean如果栈为空则返回true
peek(): int返回栈顶的整数而不从栈中删除该数
push(value: int): void将一个整数存储到栈顶
pop(): int删除栈顶整数并返回它
getSize(): int返回栈中元素的个数

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
import java.util.Scanner;

public class Main {

    public static void main(String[
        Scanner input = new Scanner(System.in);
        int l = input.nextInt();
        int first = input.nextInt();
        input.close();

        StackOfIntegers stack1 = new StackOfIntegers();
        StackOfIntegers stack = new StackOfIntegers(l);

        stack1.push(first);


        System.out.println(stack1.getsize() + " " + stack1.peek());

        for( int i = 0; i < l; i++)
            stack.push(i);

        while(!stack.empty())
            System.out.print(stack.pop() + " ");
    }

}

/* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

22
49

结尾无空行

输出样例:

在这里给出相应的输出。例如:

16 49
21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 

结尾无空行

答案代码如下:

class StackOfIntegers {
    int top=0,rear=0;//将数组下标设置成成员变量
    int[] a;//定义一个数组,在数组内 模拟 栈 先进后出 的操作
    StackOfIntegers(){
        top=0;
        rear=0;
        a=new int[16];
    }//栈类的无参构造,根据题目要求,默认栈的大小为16。栈的头下标和尾下标均为0
    StackOfIntegers(int i){
        top=0;
        rear=0;
        a=new int[i];
    }//栈类的带参构造,参数为一个整型数值,代表数组大小,即栈的容量
    public void push(int c) {
        this.a[top]=c;
        this.top=this.top+1;
    }//元素入栈:若一个元素入栈,头下标不变仍为0,尾下标+1,当栈不为空时,注意栈顶元素始终是尾下标的前一个下标所代表的元素
    public int getsize() {
        return this.a.length;
    }//得到数组的元素个数,即栈中的元素个数
    public int peek() {
        if(empty()!=true)
            return (a[top-1]);
        else
            return 0;

    }//取出栈顶元素的数值,不对栈进行任何操作
    public boolean empty() {
        if(top==rear)
            return true;
        else
            return false;

    }//判断栈是否为空(即判断数组中是否含有元素)
    public int pop() {
        if(this.empty()!=true)
        {
            int g=a[top-1];
            a[top-1]=0;
            top=top-1;
            return g;
        }
        else {
            return 0;
        }
    }//出栈操作,若栈不为空,则返回栈顶元素的值并且赋0(代表删除元素值的意思),再使尾下标-1,改变栈顶元素

}

本题设计到了数据结构中的线性表中的栈这一逻辑结构,栈有线性表的全部特点并且栈的元素遵循先进后出的原则,与队列的元素遵循先进先出的原则相反,后序再详细讨论数据结构。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值