Kinev. 2022-05-20 18:51 采纳率: 75%
浏览 61
已结题

java数据结构基础,望在2h内解答,要代码!!

建立栈的Java接口IStack,并用顺序栈类SqStack实现这个接口。要求
(1)编写所有栈的基本方法,包括(初始化、盘空、求长度、入栈、弹栈、取栈顶元素)
(2)调用初始化方法建立一个栈MyStack。
(3)调用入栈方法,依次使a,b,c,d,e入栈;
(4)输出顺序栈MyStack的长度;
(5)输出顺序栈MyStack中的所有元素;
(6)判断栈MyStack是否为空。
(7)释放顺序栈MyStack。

  • 写回答

2条回答 默认 最新

  • WaitIKnowYou 2022-05-20 20:16
    关注

    接口

    package 栈;
    interface IStack {
        public void clear();
    
        public boolean isEmpty();
    
        public int length(); // 返回数据元素个数
    
        public Object peek(); // 取栈顶元素并返回其值
    
        public void push(Object x) throws Exception; // 将数据元素压入栈顶
    
        public Object pop(); // 删除并返回栈顶元素
    }
    
    

    顺序栈与测试

    package 栈;
    
    
    
    class Node {
        public Object data;// 存放节点值
        public Node next;// 后继节点的引用
    
        // 无参数时的构造函数
        public Node() {
            this(null, null);
        }
    
        // 带一个参数时的构造函数
        public Node(Object data) {
            this(data, null);
        }
    
        // 带两个参数的构造函数
        public Node(Object data, Node next) {
            this.data = data;
            this.next = next;
        }
    }
    
    //顺序栈
    class SqStack implements IStack {
        private Object[] stackElem;// 对象数组
        private int top;// 在非空栈中,top始终指向栈顶元素的下一个存储位置,当栈为空时,top值为0
    
        // 构造函数
        public SqStack(int maxSize) {
            top = 0;
            stackElem = new Object[maxSize];// 为栈分配maxSize个存储单元
        }
    
        // 栈置空
        @Override
        public void clear() {
            top = 0;
        }
    
        // 判断栈是否为空
        @Override
        public boolean isEmpty() {
            return top == 0;
        }
    
        // 求栈中数据元素个数
        @Override
        public int length() {
            return top;
        }
    
        // 取栈顶元素
        @Override
        public Object peek() {
            if (!isEmpty()) {
                return stackElem[top - 1];
            } else {
                return null;
            }
        }
    
        // 入栈
        @Override
        public void push(Object x) throws Exception {
            if (top == stackElem.length)// 栈满
                throw new Exception("栈已满");
            else
                stackElem[top++] = x;// 先将X赋值给stackElem[top],再将top加一
        }
    
        // 出栈
        @Override
        public Object pop() {
            if (isEmpty())
                return null;
            else
                return stackElem[--top];// 先将top减一,再返回stackElem[top]的值
        }
    
        // 输出栈中所有元素(从栈顶到栈底元素)
        public void display() {
            for (int i = top - 1; i >= 0; i--) {
                System.out.print(stackElem[i].toString() + " ");// 输出
            }
        }
    }
     public class MyStack{
        
        public static void main(String[] args) throws Exception {
            
            SqStack MyStack = new SqStack(20);
            MyStack.push('a');
            MyStack.push('b');
            MyStack.push('c');
            MyStack.push('d');
            MyStack.push('e');
            System.out.println("长度: "+MyStack.length());
            while(! MyStack.isEmpty())
            System.out.println(MyStack.pop());
            System.out.println("MyStack是否为空? \n"+(MyStack.isEmpty()?"是":"不是"));
            System.out.println("清空栈中...");
            MyStack.clear();
            System.out.println("栈清空了!");
    
            
        }
        
        
        
    }
    
    
    

    运行截图

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 修改了问题 5月20日
  • 创建了问题 5月20日

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答