创建一个节点类
/**
* @author
* @create 86153-2021
*/
public class G {
int height;
String name;
G next;
public G(int height, String name) {
this.height = height;
this.name = name;
}
public G() {
}
@Override
public String toString() {
return "G{" +
"height=" + height +
", name='" + name + '\'' +
'}';
}
}
创建链表
/**
* @author
* @create 86153-2021
*/
public class Glist {
private G front;
private G rear;
private int size;
public G getFront() {
return front;
}
public void setFront(G front) {
this.front = front;
}
public G getRear() {
return rear;
}
public void setRear(G rear) {
this.rear = rear;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
/**
* 创建队列
*/
public Glist() {
rear=front=null;
}
/**
*判空
* @return
*/
public boolean isEmpty(){
return ((front==null&rear==null)?true:false);
}
/**
* 进入队列
* @param g
*/
public void enList(G g){
if(isEmpty()){
rear=front=g;
}else{
rear.next=g;
rear=g;
}
size++;
}
/**
* 出队列
* @return
*/
public G deList(){
G g1;
if(isEmpty()){
throw new RuntimeException("队列为空");
}else {
g1=front;
front=g1.next;
g1.next=null;
size--;
}
if(size==0){
front=rear;
}
return g1;
}
/**
* 测试代码
* @param args
*/
public static void main(String[] args) {
Glist g1=new Glist();
G s1=new G(4,"sfgsf");
G s2=new G(5,"sfgsf");
G s3=new G(6,"sfgsf");
G s4=new G(7,"sfgsf");
g1.enList(s1);
g1.enList(s2);
g1.enList(s3);
System.out.println(g1.deList().toString());
System.out.println(g1.getSize());
System.out.println(g1.deList().toString());
System.out.println(g1.getSize());
System.out.println(g1.deList().toString());
System.out.println(g1.getSize());
}
}
总结
1.判断队列是否为空时:rear和font都为空时,队列才为空。
2.在列添加第一个元素时:头指针和尾指针要指向同一个元素(没有头结点的队列);