java数据结构之链式队列的实现

快来打我* 2022-08-23 00:50 287阅读 0赞

今天介绍一下数据结构中的链式队列,和线性队列相同的是它也有队头(front),和队尾(rear)。

规则和线性队列相同也是先进先出(FIFO),队尾进,队头出。

下面看具体的链式队列的具体实现案例:

  1. package queue;
  2. /**
  3. * @ClassName: CirQueue
  4. * @Description: 链式队列
  5. * @date 2016年6月3日 下午19:55
  6. * @param 无
  7. */
  8. public class LinkQueue {
  9. private class Node{//节点类
  10. private Object data;
  11. private Node next;
  12. public Node(){
  13. data=null;
  14. next=null;
  15. }
  16. public Node(Object data,Node next){
  17. this.data=data;
  18. this.next=next;
  19. }
  20. }
  21. //队未
  22. private Node rear;
  23. //队头
  24. private Node front;
  25. //队列长度
  26. private int size=0;
  27. public LinkQueue(){//初始化数据
  28. Node node=new Node();
  29. front=rear=node;
  30. }
  31. /**
  32. * 将一个对象追加到队列尾部
  33. * @param value
  34. * @autho lzq
  35. */
  36. public void enQueue(Object value){
  37. Node node=new Node(value,null);
  38. rear.next=node;
  39. rear=node;
  40. size++;
  41. }
  42. /**
  43. * 队列头部出队
  44. * @return 返回出列的队头元素
  45. * @author 林志强
  46. */
  47. public Object deQueue(){
  48. if(rear==front){
  49. return null;
  50. }else{
  51. Node temp=front.next;
  52. front.next=temp.next;
  53. if(temp.next==null){
  54. front=rear;
  55. }
  56. size--;
  57. return temp.data;
  58. }
  59. }
  60. /**
  61. * 队列长度
  62. * @return int型的数据
  63. * @author 林志强
  64. */
  65. public int size(){
  66. return size;
  67. }
  68. /**
  69. * 判断是否为空
  70. * @return int型的数据
  71. * @author 林志强
  72. */
  73. public boolean isEmpty(){
  74. return rear==front;
  75. }
  76. /**
  77. * 获取队头元素但是不出队
  78. * @return 返回队头元素
  79. * @author 林志强
  80. */
  81. public Object getQueue(){
  82. return front.next.data;
  83. }
  84. /**
  85. * 打印队列中数据
  86. * @author 林志强
  87. */
  88. public void disPlay(){
  89. Node temp=front.next;
  90. while(temp!=null){
  91. System.out.print(temp.data+"\t");
  92. temp=temp.next;
  93. }
  94. System.out.println();
  95. }
  96. public static void main(String[] args) {
  97. LinkQueue l=new LinkQueue();
  98. System.out.println(l.size());
  99. System.out.println(l.isEmpty());
  100. for(int i=0;i<5;i++){
  101. l.enQueue(i);
  102. }
  103. l.disPlay();
  104. System.out.println(l.deQueue());
  105. System.out.println(l.deQueue());
  106. System.out.println(l.deQueue());
  107. l.disPlay();
  108. // System.out.println(l.getQueue());
  109. }
  110. }

如果有什么不清楚或者有啥疑问意见可以加我QQ/微信 208017534 / qiang220316,欢迎一起交流一起进步。

Center

发表评论

表情:
评论列表 (有 0 条评论,287人围观)

还没有评论,来说两句吧...

相关阅读