堆栈和队列的实现
2016-08-09 23:09
651 查看
1.使用数组实现,代码和结果如下所示:
要求:
写Stack.java,实现堆栈功能,使用int数组保存数据特点:先进后处 后进先出
写Queue.java,实现队列功能,使用int数组保存数据特点:先进先出 后进后出 使用Test.java对堆栈和队列进行测试
如下所示,分别为实现方法:
首先实现stack.java类,其代码如下所示:
编译运行之后,我们能够看到运行结果如下所示:
根据分析,我们的运行结果是正确的(以上只是部分结果,下面是运行后的所有结果,请下载查看http://download.csdn.net/my)
2.使用list来实现功能,代码如下所示:
写MyStack类,实现堆栈功能。在类中使用ArrayList保存数据。
写MyQueue类,实现队列功能。在类中使用ArrayList保存数据。
使用Test.java测试堆栈和队列
首先实现MyStack.java代码:
package sample;
import java.util.*;
public class MyStack
{
List<Integer> list = new ArrayList<Integer>();
Iterator it=list.iterator();
int index=0;
public MyStack(){}
public void push(Integer i)
{
list.add(i);
index++;
}
public Integer pop()
{
if(!(list.isEmpty()))
{
index--;
return (Integer)list.remove(index);
}
return null;
}
}实现MyQueue.java类:
package sample;
import java.util.*;
public class MyQueue
{
List<Integer> list = new ArrayList<Integer>();
Iterator it=list.iterator();
int index=0;
public MyQueue(){}
public void in(Integer i)
{
list.add(i);
index++;
}
public Integer out()
{
if(!(list.isEmpty()))
{
Integer temp=0;
temp=(Integer)list.get(0);
list.remove(0);
index--;
return temp;
}
return null;
}
}使用Test类进行测试,代码如下所示:
package sample;
public class Test
{
public static void main(String[] args)
{
MyStack stack = new MyStack();
stack.push(new Integer(1));
stack.push(new Integer(2));
stack.push(new Integer(3));
System.out.println(stack.pop());
stack.push(new Integer(4));
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
stack.push(new Integer(5));
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println("------------------------");
MyQueue queue = new MyQueue();
queue.in(new Integer(1));
queue.in(new Integer(2));
queue.in(new Integer(3));
System.out.println(queue.out());
queue.in(new Integer(4));
System.out.println(queue.out());
System.out.println(queue.out());
System.out.println(queue.out());
System.out.println(queue.out());
queue.in(new Integer(5));
System.out.println(queue.out());
System.out.println(queue.out());
}
}结果如下所示:
以上就是堆栈的两种实现方法
要求:
写Stack.java,实现堆栈功能,使用int数组保存数据特点:先进后处 后进先出
写Queue.java,实现队列功能,使用int数组保存数据特点:先进先出 后进后出 使用Test.java对堆栈和队列进行测试
如下所示,分别为实现方法:
首先实现stack.java类,其代码如下所示:
package ex.md05; public class Stack { private int[] a=new int[1000]; private int i=0; public void push(int m) { a[++i]=m; } public int pop() { if(i>0) { return a[i--]; } else return -1; } }接着实现队列Queue.java代码,具体如下所示:
package ex.md05; public class Queue { int[] a=new int[1000]; private int i=1; public void in(int m) { a[i++]=m; } public int out() { int k=1; int index=0; int temp=a[k]; for(int j=k;j<i;j++) { a[j-1]=a[j]; index++; } i=index; return temp; } }最后,我们实现测试类Test.java,观察逻辑是否正确
package ex.md05; public class Test { public static void main(String[] args) { Stack stack = new Stack(); //stack.pop(); System.out.println("Stack push()---1-200--------"); for(int i=1; i<=200; i++){ stack.push(i); } System.out.println("Stack pop()---1-100--------"); for(int i=1; i<=100; i++){ System.out.println("pop:" + stack.pop()); } System.out.println("Stack push()---201-300--------"); for(int i=201; i<=300; i++){ stack.push(i); } System.out.println("Stack pop()---1-200--------"); for(int i=1; i<=200; i++){ System.out.println("pop:" + stack.pop()); } Queue queue = new Queue(); //queue.out(); System.out.println("Queue in()---1-200--------"); for(int i=1; i<=200; i++){ queue.in(i); } System.out.println("Queue out()---1-100--------"); for(int i=1; i<=100; i++){ System.out.println("out:" + queue.out()); } System.out.println("Queue in()---201-300--------"); for(int i=201; i<=300; i++){ queue.in(i); } System.out.println("Queue out()---1-200--------"); for(int i=1; i<=200; i++){ System.out.println("out:" + queue.out()); } } }
编译运行之后,我们能够看到运行结果如下所示:
根据分析,我们的运行结果是正确的(以上只是部分结果,下面是运行后的所有结果,请下载查看http://download.csdn.net/my)
2.使用list来实现功能,代码如下所示:
写MyStack类,实现堆栈功能。在类中使用ArrayList保存数据。
写MyQueue类,实现队列功能。在类中使用ArrayList保存数据。
使用Test.java测试堆栈和队列
首先实现MyStack.java代码:
package sample;
import java.util.*;
public class MyStack
{
List<Integer> list = new ArrayList<Integer>();
Iterator it=list.iterator();
int index=0;
public MyStack(){}
public void push(Integer i)
{
list.add(i);
index++;
}
public Integer pop()
{
if(!(list.isEmpty()))
{
index--;
return (Integer)list.remove(index);
}
return null;
}
}实现MyQueue.java类:
package sample;
import java.util.*;
public class MyQueue
{
List<Integer> list = new ArrayList<Integer>();
Iterator it=list.iterator();
int index=0;
public MyQueue(){}
public void in(Integer i)
{
list.add(i);
index++;
}
public Integer out()
{
if(!(list.isEmpty()))
{
Integer temp=0;
temp=(Integer)list.get(0);
list.remove(0);
index--;
return temp;
}
return null;
}
}使用Test类进行测试,代码如下所示:
package sample;
public class Test
{
public static void main(String[] args)
{
MyStack stack = new MyStack();
stack.push(new Integer(1));
stack.push(new Integer(2));
stack.push(new Integer(3));
System.out.println(stack.pop());
stack.push(new Integer(4));
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
stack.push(new Integer(5));
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println("------------------------");
MyQueue queue = new MyQueue();
queue.in(new Integer(1));
queue.in(new Integer(2));
queue.in(new Integer(3));
System.out.println(queue.out());
queue.in(new Integer(4));
System.out.println(queue.out());
System.out.println(queue.out());
System.out.println(queue.out());
System.out.println(queue.out());
queue.in(new Integer(5));
System.out.println(queue.out());
System.out.println(queue.out());
}
}结果如下所示:
以上就是堆栈的两种实现方法
相关文章推荐
- PHP安全编程之可用性与数据跟踪
- linux运行级
- svn1.6下载地址
- oracle数据库操作——SQL Plus和PL/SQL
- hdu1233 还是畅通工程(MST最小生成树)
- Oracle系统表
- lightoj 1027 期望公式
- 深度网络的过拟合问题讨论
- 数据结构——从英文字典树到中文字典树
- emacs 学习小结
- 素数心得
- python 中最大,最小数的问题
- HDU-5790 Tire树+主席树
- shell学习第一天
- 浅析java之异常
- Android开发错误——Could not find class
- Python从小看到大
- 《通往财富自由之路》学习笔记
- spark编程模型
- Struts2入门