0
点赞
收藏
分享

微信扫一扫

堆栈和队列的实现

小月亮06 2023-03-28 阅读 61


1.使用数组实现,代码和结果如下所示:

要求:

写Stack.java,实现堆栈功能,使用int数组保存数据特点:先进后处 后进先出   

写Queue.java,实现队列功能,使用int数组保存数据特点:先进先出 后进后出  使用Test.java对堆栈和队列进行测试

如下所示,分别为实现方法:

首先实现stack.java类,其代码如下所示:


[java] 
   view plain
    copy 
   
 
   
 
    
 
1. package ex.md05;  
2. public class Stack  
3. {  
4. private int[] a=new int[1000];  
5. private int i=0;  
6. public void push(int m)  
7.     {  
8.       a[++i]=m;  
9.     }  
10. public int pop()  
11.     {  
12. if(i>0)  
13.       {  
14. return  a[i--];  
15.       }  
16. else return  -1;  
17.     }  
18. }


接着实现队列Queue.java代码,具体如下所示:

[java] 
   view plain
    copy 
   
 
   
 
    
 
1. package ex.md05;  
2. public class Queue  
3. {  
4. int[] a=new int[1000];  
5. private int i=1;  
6. public void in(int m)  
7.     {  
8.        a[i++]=m;  
9.     }  
10. public int out()  
11.     {  
12. int k=1;  
13. int index=0;  
14. int temp=a[k];  
15. for(int j=k;j<i;j++)  
16.        {  
17. 1]=a[j];  
18.          index++;  
19.        }  
20.          i=index;  
21. return temp;  
22.     }  
23. }


最后,我们实现测试类Test.java,观察逻辑是否正确


[java] 
   view plain
    copy 
   
 
   
 
    
 
1. package ex.md05;  
2.   
3. public class Test   
4. {  
5. public static void main(String[] args)   
6.     {  
7. new Stack();  
8. //stack.pop();  
9. "Stack push()---1-200--------");  
10. for(int i=1; i<=200; i++){  
11.             stack.push(i);  
12.         }  
13. "Stack pop()---1-100--------");  
14. for(int i=1; i<=100; i++){  
15. "pop:" + stack.pop());  
16.         }  
17. "Stack push()---201-300--------");  
18. for(int i=201; i<=300; i++){  
19.             stack.push(i);  
20.         }  
21. "Stack pop()---1-200--------");  
22. for(int i=1; i<=200; i++){  
23. "pop:" + stack.pop());  
24.         }  
25.   
26. new Queue();  
27. //queue.out();  
28. "Queue in()---1-200--------");  
29. for(int i=1; i<=200; i++){  
30.             queue.in(i);  
31.         }  
32. "Queue out()---1-100--------");  
33. for(int i=1; i<=100; i++){  
34. "out:" + queue.out());  
35.         }  
36. "Queue in()---201-300--------");  
37. for(int i=201; i<=300; i++){  
38.             queue.in(i);  
39.         }  
40. "Queue out()---1-200--------");  
41. for(int i=1; i<=200; i++){  
42. "out:" + queue.out());  
43.         }  
44.     }  
45. }



编译运行之后,我们能够看到运行结果如下所示:


堆栈和队列的实现_java

根据分析,我们的运行结果是正确的(以上只是部分结果,下面是运行后的所有结果 )

2.使用list来实现功能,代码如下所示:

写MyStack类,实现堆栈功能。在类中使用ArrayList保存数据。
写MyQueue类,实现队列功能。在类中使用ArrayList保存数据。
使用Test.java测试堆栈和队列

首先实现MyStack.java代码:

[java] 
   view plain
    copy 
   
 
   
 
    
 
1. package sample;  
2. import java.util.*;  
3. public class MyStack  
4. {  
5. new ArrayList<Integer>();  
6.         Iterator it=list.iterator();  
7. int index=0;  
8. public MyStack(){}  
9. public void push(Integer i)  
10.     {  
11.           list.add(i);  
12.           index++;  
13.     }  
14. public Integer pop()  
15.     {  
16. if(!(list.isEmpty()))  
17.        {  
18.            index--;  
19. return (Integer)list.remove(index);  
20.        }  
21. return null;  
22.     }  
23. }


实现MyQueue.java类:

[java] 
   view plain
    copy 
   
 
   
 
    
 
1. package sample;  
2. import java.util.*;  
3. public class MyQueue  
4. {  
5. new ArrayList<Integer>();  
6.         Iterator it=list.iterator();  
7. int index=0;  
8. public MyQueue(){}  
9. public void in(Integer i)  
10.     {  
11.           list.add(i);  
12.           index++;  
13.     }  
14. public Integer out()  
15.     {  
16. if(!(list.isEmpty()))  
17.        {  
18. 0;  
19. 0);  
20. 0);  
21.              index--;  
22. return temp;  
23.        }  
24. return null;  
25.     }  
26. }


使用Test类进行测试,代码如下所示:

[java] 
   view plain
    copy 
   
 
   
 
    
 
1. package sample;  
2.   
3. public class Test   
4. {  
5. public static void main(String[] args)   
6.     {  
7. new MyStack();  
8. new Integer(1));  
9. new Integer(2));  
10. new Integer(3));  
11.         System.out.println(stack.pop());  
12. new Integer(4));  
13.         System.out.println(stack.pop());  
14.         System.out.println(stack.pop());  
15.         System.out.println(stack.pop());  
16.         System.out.println(stack.pop());  
17. new Integer(5));  
18.         System.out.println(stack.pop());  
19.         System.out.println(stack.pop());  
20. "------------------------");  
21. new MyQueue();  
22. new Integer(1));  
23. new Integer(2));  
24. new Integer(3));  
25.         System.out.println(queue.out());  
26. new Integer(4));  
27.         System.out.println(queue.out());  
28.         System.out.println(queue.out());  
29.         System.out.println(queue.out());  
30.         System.out.println(queue.out());  
31. new Integer(5));  
32.         System.out.println(queue.out());  
33.         System.out.println(queue.out());  
34.     }  
35. }


结果如下所示:


堆栈和队列的实现_i++_02

以上就是堆栈的两种实现方法

举报

相关推荐

0 条评论