linkedlist數據結構是一種雙向的鏈式結構,每一個對象除了數據本身外,還有兩個引用,分別指向前一個元素和後一個元素,和數組的順序存儲結構(如:arraylist)相比,插入和刪除比較方便,但速度會慢一些。
棧的定義
棧(stack)是限制僅在表的一端進行插入和刪除運算的線性表。
(1)通常稱插入、刪除的這一端為棧頂(top),另一端稱為棧底(bottom)。
(2)當表中沒有元素時稱為空棧。
(3)棧為後進先出(last in first out)的線性表,簡稱為lifo表。
棧的修改是按後進先出的原則進行。每次刪除(退棧)的總是當前棧中"最新"的元素,即最後插入(進棧)的元素,而最先插入的是被放在棧的底部,要到最後才能刪除。
實現代碼:
package com.gc.list;
import java.util.*;
public class mystack {
private linkedlist ll=new linkedlist();
public void push(object o){
ll.addfirst(o);
}
public object pop(){
return ll.removefirst();
}
public object peek(){
return ll.getfirst();
}
public boolean empty(){
return ll.isempty();
}
public static void main(string[] args){
mystack ms=new mystack();
ms.push("zhangsan");
ms.push("lisi");
ms.push("wangwu");
system.out.println(ms.pop());
system.out.println(ms.peek());
system.out.println(ms.pop());
system.out.println(ms.empty());
}
}
佇列定義
佇列(queue)是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表
(1)允許刪除的一端稱為隊頭(front)。
(2)允許插入的一端稱為隊尾(rear)。
(3)當佇列中沒有元素時稱為空佇列。
(4)佇列亦稱作先進先出(first in first out)的線性表,簡稱為fifo表。
實現代碼:
package com.gc.list;
import java.util.*;
public class myqueue {
private linkedlist ll=new linkedlist();
public void put(object o){
ll.addlast(o);
}
//使用removefirst()方法,返回佇列中第一個數據,然後將它從佇列中刪除
public object get(){
return ll.removefirst();
}
public boolean empty(){
return ll.isempty();
}
public static void main(string[] args){
myqueue mq=new myqueue();
mq.put("zhangsan");
mq.put("lisi");
mq.put("wangwu");
system.out.println(mq.get());
system.out.println(mq.get());
system.out.println(mq.get());
system.out.println(mq.empty());
}
}