建立栈的Java接口IStack,并用顺序栈类SqStack实现这个接口。要求
(1)编写所有栈的基本方法,包括(初始化、盘空、求长度、入栈、弹栈、取栈顶元素)
(2)调用初始化方法建立一个栈MyStack。
(3)调用入栈方法,依次使a,b,c,d,e入栈;
(4)输出顺序栈MyStack的长度;
(5)输出顺序栈MyStack中的所有元素;
(6)判断栈MyStack是否为空。
(7)释放顺序栈MyStack。
java数据结构基础,望在2h内解答,要代码!!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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("栈清空了!"); } }
运行截图
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥50 gki vendor hook
- ¥15 centos7中sudo命令无法使用
- ¥15 灰狼算法和蚁群算法如何结合
- ¥15 这是一个利用ESP32自带按键和LED控制的录像代码,编译过程出现问题,请解决并且指出错误,指导如何处理 ,协助完成代码并上传代码
- ¥20 stm32f103,hal库 hal_usart_receive函数接收不到数据。
- ¥20 求结果和代码,sas利用OPTEX程序和D-efficiency生成正交集
- ¥50 adb连接不到手机是怎么回事?
- ¥20 抓取数据时发生错误: get_mooncake_data() missing 1 required positional argument: 'driver'的问题,怎么改出正确的爬虫代码?
- ¥15 vs2022无法联网
- ¥15 TCP的客户端和服务器的互联