自定义栈

自定义栈,第1张

概述本文章向大家介绍自定义栈,主要包括自定义栈使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

通过学习自定义栈,了解栈的数据结构。

首先写一个栈的接口,描述其具有的基本功能。Stack.java

然后写一个接口的实现类,这只是其中一种实现方式。ArrayStack.java

最后写一个测试类,测试自定义栈的效果。Test.java

整个栈的实现,借助了 自定义数组 这篇文章的类。Array.java

结构如下:

 Stack.java:

package algorithm;

public interface Stack {

/**

* 获取栈中数据的大小

* @return

*/

int getSize();

/**

* 判断栈是否为空

* @return

*/

boolean isEmpty();

/**

* 入栈

* @param e

*/

voID push(E e);

/**

* 出栈

* @return

*/

E pop();

/**

* 查看栈顶元素

* @return

*/

E peek();

}

ArrayStack.java:

package algorithm;

public class ArrayStack implements Stack {

private Array array;//维护一个自定义的array数组。

/**

* 无参构造函数,调用array的无参构造函数,默认为10的 初始容量。

*/

public ArrayStack(){

array=new Array();

}

/**

* 带参构造函数,指定初始容量。

* @param capacity

*/

public ArrayStack(int capacity) {

array=new Array(capacity);

}

/**

* 获取栈的大小

*/

@OverrIDe

public int getSize() {

return array.getSize();

}

/**

* 判断栈是否为空

*/

@OverrIDe

public boolean isEmpty() {

return array.isEmpty();

}

/**

* 入栈

*/

@OverrIDe

public voID push(E e) {

array.addLast(e);

}

/**

* 出栈

*/

@OverrIDe

public E pop() {

return array.removeLast();

}

/**

* 查看栈顶元素

*/

@OverrIDe

public E peek() {

return array.get(array.getSize()-1);

}

/**

* 重写Object的toString方法

*/

@OverrIDe

public String toString() {

StringBuilder sb=new StringBuilder();

sb.append("Stack:[");

for(int i=0;i

sb.append(array.get(i));

if(i!=array.getSize()-1) {

sb.append(",");

}

}

sb.append("] top");//表明最后是栈顶。

return sb.toString();

}

/**

* 自有的方法,获取栈的总容量。

* @return

*/

public int getCapacity() {

return array.getCapacity();

}

}

Test.java:

package algorithm;

public class Test {

public static voID main(String[] args) {

Stack stack=new ArrayStack();

for(int i=0;i<5;i++) {

stack.push(i);

System.out.println(stack);

}

stack.pop();

System.out.println(stack);

}

}

控制台输出:

总结

以上是内存溢出为你收集整理的自定义栈全部内容,希望文章能够帮你解决自定义栈所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1264312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存