黑马程序员------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);
}
堆栈的操作相对于向量、表等的数据结构式受限的。堆栈只允许从他的末尾增加和删除数据,也就是所谓的先进后出(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);
}
相关文章推荐
- Java之数据结构基础、线性表、栈和队列、数组和字符串,树—学习笔记
- 2Java学习笔记之数据结构——双向链表
- 1Java学习笔记之数据结构——单链表
- 黑马程序员-JAVA学习笔记-基本数据类型及其转换
- Java学习笔记-5.常用数据结构
- 黑马程序员_Java常量、变量、数据类型和运算符的学习笔记
- 黑马程序员【android】Java的数据类型的学习笔记二
- #数据结构与算法学习笔记#PTA10:层次遍历叶节点(JAVA)
- 黑马程序员--Java基础学习笔记之抽象类和接口、内存结构分析、Java APIs
- 4Java学习笔记之数据结构——队列
- 5Java学习笔记之数据结构——字符串String
- 黑马程序员J_ava学习笔记_Java中的基本数据类型转换详解
- 7Java学习笔记之数据结构——HashMap
- 【黑马程序员-学习笔记】数据结构-树与图
- 黑马程序员_java基础学习笔记01_变量,数据类型,运算符
- JAVA学习笔记 -- 数据结构
- 黑马程序员—Java基础学习笔记之数据类型转换(自动转换和强制转换)
- JAVA 数据结构与算法学习笔记一(转载)
- #数据结构与算法学习笔记#剑指Offer1:二维数组中的查找(JAVA)
- 黑马程序员--Java基础学习笔记【数组操作、基本数据类型包装类】