您的位置:首页 > 理论基础 > 数据结构算法

黑马程序员------java学习笔记之数据结构

2013-06-17 23:34 501 查看
 ------- android培训java培训、期待与您交流!----------

堆栈的操作相对于向量、表等的数据结构式受限的。堆栈只允许从他的末尾增加和删除数据,也就是所谓的先进后出(LIFO)的顺序对栈中的数据进行存取。

两种堆栈的基本操作:入栈push和出栈pop

先看一个最简单的入栈操作

Stack stack=new stack();

for(int i = 0; i<10;i++)

{

stack.add(new Interger(i));

if(!stack.isEmpty())

{

System.out.println(stack.pop());

}

}

直接将数据装箱后添加到堆栈的末尾。

堆栈也是可以利用数组的方式进行存取。由于java中没有明确定义指针的概念,相对于其他高级语言比较繁琐。但是也相对的更加安全

一个完整的操作方法

public class ArrayStack {

// private String input ;

//private String output;

private int maxsize;

Object []objects ;

int top;

public ArrayStack(int maxsize){

this.maxsize = maxsize;

objects = new Object[maxsize];

top = -1;

}

public void push(Object object){

objects[++top] = object;

}

public Object pop(){

return objects[top--];

}

public Object peek(){

return objects[top];

}

public boolean isempty(){

return (top == -1);

}

public boolean isfull(){

return (top == maxsize-1);

}

public static void main(String []args){

ArrayStack as = new ArrayStack(10);

as.push("ele 1");

as.push("ele 2");

as.push("ele 3");

as.push("ele 4");

while(!as.isempty())

System.out.println("pop(): "+ as.pop());

}

}

例如将一个字符串压入栈中,进行翻转后输出

public String doRov()

{

ArrayStack as=new ArrayStack(in.length());

for (int i=0;i<in.length();i++)

{

char in= this.in.charAt(i);

as.push(Character.toString(in));

}

out = "";

while(!as.isempty())

{

String ch = (String )ad,pop();

out +=ch;

}

return out;

}

队列

区别于堆栈,队列是一种先进先出(FIFO)的数据结构

相对于堆栈来说,java中并没有对队列的直接工具类操作,可以巧妙的利用堆栈进行操作。出队列的时候可以每次移出堆栈的第一个数据

入队列操作。基本同堆栈

public void enpueue(Object o)

{

this.addElement(o);

}

这里的队列类需要继承java.util.Vector类

出队列操作

public Object dequeue()

{

int len = this.size();

if (this.isEmpty())

return null;

Object object = this.ekementAt(0);

this.removeElementAt(0);

return object;

}

另外一种是使用

LinkedList工具类

其入队方法同上

出队方法如下

public Object depueue()

{

if(ll.size()==0)

return null;

return ll.removeFirst();

}

在进行队列操作时,一定要判断队列是否为空。否则可能产生异常

public boolean isEmpty()

{

return (ll.size()==0);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: