Java创建链式队列

Java创建链式队列

更改成了可以互动的创建形式

原文来源:https://blog.csdn.net/jiutianhe/article/details/18606295?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161741230116780357231415%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161741230116780357231415&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-22-18606295.pc_search_result_hbase_insert&utm_term=java%E9%93%BE%E5%BC%8F%E9%98%9F%E5%88%97

修改后:

package duilie;
import java.io.Serializable;
import java.util.Scanner;

	public class Duilie<T> implements Serializable{
	 
	  private static final long serialVersionUID = -6726728595616312615L;
	 
	  //定义一个内部类Node,Node实例代表链队列的节点。
	  private class Node {
	    
	    private T data;//保存节点的数据
	   
	    private Node next;//指向下个节点的引用
	 
	    //无参数的构造器
	    public Node() {
	    }
	 
	    //初始化全部属性的构造器
	    public Node(T data, Node next) {
	      this.data = data;
	      this.next = next;
	    }
	  }
	  
	  private Node front;//保存该链队列的头节点
	  
	  private Node rear;//保存该链队列的尾节点
	 
	  private int size;//保存该链队列中已包含的节点数
	 
	  //创建空链队列
	  public Duilie() {
	    //空链队列,front和rear都是null
	    front = null;
	    rear = null;
	  }
	 
	  public Duilie(T element) {
		    front = new Node(element, null);
		    //只有一个节点,front、rear都指向该节点
		    rear = front;
		    size++;
	  }

	  // 获取顺序队列的大小    
		  public int size() {
		    return size;
		  }
		 
		//入队
		  public void offer(T element) {
		    //如果该链队列还是空链队列
		    if (front == null) {
		      front = new Node(element, null);     
		      rear = front;//只有一个节点,front、rear都指向该节点
		    } else {     
		      Node newNode = new Node(element, null);//创建新节点     
		      rear.next = newNode;//让尾节点的next指向新增的节点     
		      rear = newNode;//以新节点作为新的尾节点
		    }
		    size++;
		  }
		 
		 //出队
		  public T poll() {
		    Node oldFront = front;
		    front = front.next;
		    oldFront.next = null;
		    size--;
		    return oldFront.data;
		  }
		 
		 
		// 判断顺序队列是否为空队列    
		 
		  public boolean isEmpty() {
		    return size == 0;
		  }
		
		  public String toString() {
		    //链队列为空链队列时
		    if (isEmpty()) {
		      return "[]";
		    } else {
		      StringBuilder sb = new StringBuilder("[");
		      for (Node current = front; current != null; current = current.next) {
		        sb.append(current.data.toString() + ", ");
		      }
		      int len = sb.length();
		      return sb.delete(len - 2, len).append("]").toString();
		    }
		  }
	  
	  public static void main(String[] args) {
		  Scanner scanner1=new Scanner(System.in);
	    	System.out.print("请输入第一个元素:");
	    	String add=scanner1.next(); 
	    	Duilie<String> queue = new Duilie<String>(add);
	    	System.out.println(queue);
	   Scanner scanner=new Scanner(System.in);
	   while(true) {System.out.print("请输入1查看队列,输入2添加元素,输入3删除元素");
	    int a=scanner.nextInt();
	    if(a==1) {
	    	System.out.println(queue);
	    }
	    if(a==2) {
	    	Scanner scanner2=new Scanner(System.in);
	    	System.out.print("请输入要添加的元素:");
	    	String add2=scanner2.next(); 
	       queue.offer(add2);
	      System.out.println(queue);
	      
	    }
	    if(a==3) {
	      //删除一个元素后
	      queue.poll();
	      System.out.println("删除一个元素后的队列:" + queue);
	  
	  }
	   }
	}
	}

测试结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值