用数组实现一个简单的堆栈

堆栈(Stack)是一个比较普通,而又特别的数据结构。合理利用它的先进后出(FILO),有时候会有一些比较好的作用。这里面不多讲的它的应用,而是举一个很简单的例子来表明它的FILO特性,并用数组来实现一个堆栈算法。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

请看代码:

  1. importjava.util.*;
  2. publicclassTestStack{
  3. publicstaticvoidmain(Stringargs[]){
  4. Stack<String>stack=newStack<String>();
  5. for(inti=0;i<10;i++)
  6. stack.push("Stack"+i);
  7. while(!stack.isEmpty())
  8. System.out.println(stack.pop());
  9. }
  10. }

结果我就不打印了,从上面的例子中,我们可以看出Stack类的一些典型方法,比如pushpopisEmpty方法。下面就利用数组来实现一个Stack算法:

  1. classStackOverflowExceptionextendsException{
  2. publicStackOverflowException(){
  3. }
  4. }
  5. classStackEmptyExceptionextendsException{
  6. publicStackEmptyException(){
  7. }
  8. }
  9. publicclassStackClass{
  10. privateintstackSize;
  11. privateintstackTop;
  12. privateString[]array;
  13. publicStackClass(){
  14. System.out.println("ThecurrentStackcapacityis100.");
  15. stackSize=100;
  16. stackTop=0;
  17. array=newString[stackSize];
  18. }
  19. publicStackClass(intsize){
  20. if(size<=0){
  21. System.out.println("ThecurrentStackcapacityis100.");
  22. stackSize=100;
  23. }
  24. stackSize=size;
  25. stackTop=0;
  26. array=newString[stackSize];
  27. }
  28. publicbooleanisFullStack(){
  29. returnstackSize==stackTop;
  30. }
  31. publicbooleanisEmptyStack(){
  32. returnstackTop==0;
  33. }
  34. publicvoidpush(Stringstr)throwsStackOverflowException{
  35. if(isFullStack())
  36. thrownewStackOverflowException();
  37. array[stackTop]=str;
  38. stackTop++;
  39. }
  40. publicStringpop()throwsStackEmptyException{
  41. if(isEmptyStack())
  42. thrownewStackEmptyException();
  43. stackTop--;
  44. returnarray[stackTop];
  45. }
  46. publicstaticvoidmain(Stringargs[]){
  47. StackClassstack=newStackClass();
  48. try{
  49. stack.push("a");
  50. stack.push("aa");
  51. stack.push("aaa");
  52. }
  53. catch(StackOverflowExceptione){
  54. e.printStackTrace();
  55. }
  56. try{
  57. while(!stack.isEmptyStack())
  58. System.out.println(stack.pop());
  59. }
  60. catch(StackEmptyExceptione){
  61. e.printStackTrace();
  62. }
  63. }
  64. }

输出结果是:

  1. ThecurrentStackcapacityis100.
  2. aaa
  3. aa
  4. a

当然这个堆栈的实现还是有许多不足的地方,比如只能存储字符串型的元素,关于它的完善将在以后进行。大家先只是看看想想吧...^_^...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值