当前位置: 首页 > news >正文

Java实现——链队列(泛型)


package Data_Structure;import java.util.NoSuchElementException;
import java.util.Random;//链队列,附设头结点
public class LinkQueue<T> {//内部结点类private static class Node<T>{T data;Node<T> next;public Node(T val){data=val;}public Node(){}public T getData() {return data;}public Node<T> getNext() {return next;}public void setNext(Node<T> next) {this.next = next;}}private final Node<T> head; //头指针private Node<T> tail; //尾指针private int size; //队列大小//初始化public LinkQueue(){head = tail = new Node<>(); //创建头结点,不存储具体数据//空队列为head和tail指向头结点}//入队public void enQueue(T val){Node<T> newNode = new Node<T>(val); //创建新结点tail.setNext(newNode); //指向新结点newNode.setNext(null); //队尾的next必为空tail = newNode; // 设置新队尾。size++;}//出队public T deQueue(){//处理队空if(head==tail){throw new NoSuchElementException("队列中没有元素");}T val = head.getNext().getData(); //获取队头元素head.setNext( head.getNext().getNext()); //出队//出队后,如果head.getNext为空,则代表队列中只有一个元素,则需更新尾指针if(head.getNext()==null){tail = head;}size--;return val;}// 查看队头元素(不移除)public T peek() {if (head==tail) {throw new NoSuchElementException("队列为空,无法获取队头元素");}return head.getNext().getData();  // 使用getter方法}//清空队列public void clear(){Node<T> p = head.getNext();while(p!=null){Node<T> temp = p.getNext();p.setNext(null);p=temp;}head.setNext(null);tail = head;size= 0;}// 查看队列元素public void show(){if(head==tail)throw new NoSuchElementException("队列为空");Node<T> current = head.getNext(); //获取首元结点while(current!=null){System.out.print(current.getData()+" ");current = current.getNext();}System.out.println();}public static void main(String[] args){LinkQueue<Integer> linkQueue =new LinkQueue<Integer>();for(int i=0;i<10;i++){Random ran = new Random();Integer val = ran.nextInt(999 - 100 + 1) + 100; //自动装箱linkQueue.enQueue(val);}linkQueue.show();System.out.println(linkQueue.peek());System.out.println("被出队的元素:"+linkQueue.deQueue());linkQueue.show();}}
http://www.jsqmd.com/news/274882/

相关文章:

  • 基于微信小程序的医院体检预约管理系统的设计和实现
  • 2026年上海二手房装修公司推荐,一站式服务与拎包入住交付能力横评 - 品牌鉴赏师
  • JavaScript 数组合并性能优化:扩展运算符 vs concat vs 循环 push
  • SSM291的母婴用品商城网站
  • python项目打包为镜像
  • 救命神器9个AI论文软件,专科生搞定毕业论文+格式规范!
  • 知光项目对象存储模块
  • 【路径规划】基于RRT、RRT星、RRTX、A_和D_ Lite实现机器人路径规划附matlab代码
  • fastapi里面tortoise-orm的用法
  • 【无人机三维路径规划】基于蚁群算法ACO、蜣螂算法DBO、人工蜂鸟算法AHA复杂山地模型下无人机路径规划附Matlab代码
  • 【AIGC】2025年12月13日 AutoMV: Automatic Multi-Agent System for Music Video Generation 1:介绍
  • 大数据领域数据服务的用户需求挖掘方法
  • 【初阶数据结构】解锁顺序表潜能:一站式实现高效通讯录系统
  • 【AIGC】2025年12月13日 AutoMV: Automatic Multi-Agent System for Music Video Generation 2:论文
  • POSIX信号量
  • SSM289的美食推荐带店铺管理系统
  • S7-1200 控制 5 轴伺服程序案例分享
  • SSM278的考研互助辅导平台vue
  • 生产线效率已近瓶颈,如何通过精益管理实现新的突破?
  • Kiro教程(三)| Kiro 实战与最佳实践
  • 计算机毕业设计springboot医院门诊信息管理系统 基于SpringBoot的智慧门诊综合服务平台 面向中小型医院的SpringBoot门诊业务一体化系统
  • URL末尾到底该不该加斜杠?前端老油条的血泪经验
  • 三菱fx - 5u轴定位与Modbus RTU RS - 485测微计通信案例大揭秘
  • Kiro教程(二)| Kiro 核心功能完全指南
  • 2026/1/20
  • 计算机毕业设计springboot基于Java的房屋租赁系统的设计与实现 基于SpringBoot与Java的在线租房管理平台的设计与实现 JavaWeb架构下智慧住房租赁服务系统研发
  • 2026/1/17~19
  • A.每日一题——3314.构造最小位运算数组I+3315.构造最小位运算数组II
  • 欧姆龙CP1H + CIF11与欧姆龙E5cc温控器通讯程序分享
  • 【DPFSP问题】基于混沌增强领导者黏菌算法CELSMA求解分布式置换流水车间调度DPFSP附Matlab代码