队列--先入先出
栈---后入先出
链表实现队列和栈。首先我们需要构建一个链表。链表有哪几要素?
1、链表本身的value
2、链表的next指针,next指针指的还是同样类型的值。
下边看代码
public class Element<T> {
private T value;//链表值
private Element<T> next;//指针
public void setNext(Element<T> next) {
this.next = next;
}
public Element<T> getNext(){
return next;
}
public void setValue(T value) {
this.value = value;
}
public T getValue(){
return value;
}
}
下边我们来构建先入先出的队列。
首先队列有一个头,不然的话 队列从哪开始呢?
所以我们定义类时主要包括 头、尾、链表长度。
代码如下:
public class ListImpl<T>{
private Element<T> first=null; //链表头
private Element<T> last=null; //链表尾
private int size=0; //链表长度
public boolean pushBack(T newElement) {
Element<T> element=new Element<>();
element.setValue(newElement);
if(size==0) {
first=element;
size++;
return true;
}
if(last==null){
last=element;
first.setNext(last);
}else {
last.setNext(element);
last=element;
}
size++;
return true;
}
public Element<T> popFront() {
if(first==null){
return null;
}else {
Element<T> result=first;
first=first.getNext();
return result;
}
}
public int size() {
return size;
}
public Element front() {
return first;
}
}
好了 到底我们的链表结构就完成了。下边测试一下吧
public static void main(String[] args) {
ListImpl<String> list=new ListImpl<String>();
list.pushBack("11");
list.pushBack("22");
list.pushBack("33");
System.out.print(list.popFront().getValue().toString());
System.out.print(list.popFront().getValue().toString());
System.out.print(list.popFront().getValue().toString());
}
结果:11
结果:22
结果:33