您的位置:首页 > 编程语言 > Java开发

Java中用LinkedList实现栈和队列

2012-11-02 14:12 756 查看
栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表。


LinkedList数据结构是一种双向的链式结构,每一个对象除了数据本身外,还有两个引用,分别指向前一个元素和后一个元素,和数组的顺序存储结构(如:ArrayList)相比,插入和删除比较方便,但速度会慢一些。


栈的定义


栈(Stack)

是限制仅在表的一端进行插入和删除运算的线性表。


(1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。


(2)当表中没有元素时称为空栈。


(3)栈为后进先出(LastInFirstOut)的线性表,简称为LIFO表。


栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。


实现代码:


packagecom.weisou.dataStruct;


importjava.util.LinkedList;


@SuppressWarnings("unchecked")


publicclassMyStack{


LinkedListlinkList=newLinkedList<Object>();


publicvoidpush(Objectobject){


linkList.addFirst(object);


}


publicbooleanisEmpty(){


returnlinkList.isEmpty();


}


publicvoidclear(){


linkList.clear();


}


//移除并返回此列表的第一个元素


publicObjectpop(){


if(!linkList.isEmpty())


returnlinkList.removeFirst();


return"栈内无元素";


}


publicintgetSize(){


returnlinkList.size();


}


publicstaticvoidmain(String[]args){


MyStackmyStack=newMyStack();


myStack.push(2);


myStack.push(3);


myStack.push(4);


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


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


}


}


队列定义


队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表


(1)允许删除的一端称为队头(Front)。


(2)允许插入的一端称为队尾(Rear)。


(3)当队列中没有元素时称为空队列。


(4)队列亦称作先进先出(FirstInFirstOut)的线性表,简称为FIFO表。


实现代码:


packagecom.weisou.dataStruct;


importjava.util.LinkedList;


/**


*


*@authorgf


*@date2009-11-13


*/


publicclassMyQueue{


LinkedListlinkedList=newLinkedList();


//队尾插


publicvoidput(Objecto){


linkedList.addLast(o);


//队头取取完并删除


publicObjectget(){


if(!linkedList.isEmpty())


returnlinkedList.removeFirst();


else


return"";


}


publicbooleanisEmpty(){


returnlinkedList.isEmpty();


}


publicintsize(){


returnlinkedList.size();


}


publicvoidclear(){


linkedList.clear();


}


/**


*@paramargs


*/


publicstaticvoidmain(String[]args){


MyQueuemyQueue=newMyQueue();


myQueue.put(1);


myQueue.put(2);


myQueue.put(3);


System.out.println(myQueue.get());


}


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