栈和队列
栈(先进后出)的实现:
1、利用顺序表实现,即使用尾插加尾删的方式实现
2、利用链表实现,则头尾皆可
顺序表实现栈如下:
public class MyStack{
private int[] array=new int[100];
private int size=0;
public void push(int v){
array[size++]=v;
}
public int pop(){
return array[--size];
}
public int peek(){
return array[size-1];
}
public boolean isEnpty(){
return size==0;
}
public int size(){
return size;
}
队(先进先出)列的实现:
队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上,代码如下:
class Node{
int val;
Node next;
Node(int val.Node next){
this.val=val;
this.next=next;
}
Node(int val){
this(val,null);
}
}
public class MyQueue{
private Node head=null;
private Node tail=null;
private int size=0;
public void offer(int v){
Node node=new Node(v);
if(tail==null){
head=node;
}else{
tail.next=node;
}
tail=node;
size++;
}
public int poll(){
if(size==0){
throw new RuntimeException("队列为空");
Node oldHead=head;
head=head.next;
if(head==null){
tail=null;
}
size--;
return oldHead.val;
}
public int peek(){
if(size==0){
throw new RuntimeException("队列为空");
}
return head.val;
}
public boolean isEmpty(){
return size==0;
}
public int size(){
return size;
}
}