首页 > 其他分享 >9.24尾哨兵队实现

9.24尾哨兵队实现

时间:2023-09-24 23:24:02浏览次数:40  
标签:Node return 9.24 实现 System next println 哨兵 out


import java.util.Scanner;

//栈的尾哨兵链表实现,自己实现的是尾部节点,然而视频是头节点,哈哈哈
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入队的容量");
int n = sc.nextInt();
Queue1<Integer> q = new Queue1<>(n);
System.out.println(q.isempty());
q.push(1);
q.push(2);
q.push(3);
q.push(4);
q.query();
System.out.println();
System.out.println(q.pop());
System.out.println(q.peektail());
System.out.println(q.peekhead());
System.out.println(q.isempty());
System.out.println(q.size);
q.query();
}

public static class Queue1<E> {
Node<E> tail = new Node<>(null, null);//尾节点
int capacity;//最大容量
int size = 0;//实际大小

public Queue1(int capacity) {
this.capacity = capacity;
}

public boolean push(E value) {//进队
if (size >= capacity) {
System.out.println("队已满,插入失败");
return false;
}
Node<E> p = new Node<>(value, tail.next);
tail.next = p;
size++;
return true;
}

public E pop() {//出队
if (isempty()) {
System.out.println("队为空,删除失败");
return null;
}
Node p = querysecond().next;
querysecond().next = null;
size--;
return (E) p.value;
}

public E peektail() {//查询队尾
if (isempty()) {
System.out.println("队为空,查询失败");
return null;
}
return (E) tail.next.value;
}

public E peekhead() {//查询队头
if (isempty()) {
System.out.println("队为空,查询失败");
return null;
}
Node p;
for (p = tail; p.next != null; p = p.next) {
}
return (E) p.value;
}

public Node<E> querysecond() {//查询队头的后一个
if (isempty()) {
System.out.println("队为空,查询失败");
return null;
}
Node p;
for (p = tail; p.next.next != null; p = p.next) {
}
return p;
}

public boolean isempty() {//判空
if (size == 0) {
return true;
}
return false;
}

public int size() {//返回队大小
return size;
}

public void query() {//遍历队
if (tail.next == null) {
System.out.println("队为空,遍历失败");
return;
}
for (Node p = tail.next; p != null; p = p.next) {
System.out.print(p.value + " ");
}
}

static class Node<E> {
E value;
Node next;

public Node(E value, Node next) {
this.value = value;
this.next = next;
}
}
}
}

标签:Node,return,9.24,实现,System,next,println,哨兵,out
From: https://www.cnblogs.com/zhaoqianwan/p/17726924.html

相关文章

  • 9.24java wab实现创建新界面验证码
    <!DOCTYPEhtml><html><head><title>UserLogin</title><style>.container{width:300px;margin:0auto;padding:20px;border:1pxsolid#ccc;text-align:center;}.inpu......
  • 信息安全系统设计与实现
    知识点总结Shell编程基础是通过命令行脚本来自动化执行一系列命令的过程。你可以使用文本编辑器创建.sh文件进行编写。在.sh文件的第一行添加#!/bin/bash,指定使用Bash作为Shell解释器,用于执行脚本。变量是用于存储数据的容器。你可以使用varname=value的形式来定义变量,然后使用$......
  • 单点登录的设计与实现思路
    1.定义单点登录 (Singlesign-on,缩写为SSO),一种对于许多相互关连,但是又是各自独立的软件系统,提供“存取控制”的属性。当拥有这项属性时,当用户“登录”时,就可以获取所有系统的存取权限,不用对每个单一系统都逐一登录。2.概述随着业务的发展,产品的功能越来越多,越来越重,这时候......
  • 结对项目:用Python实现四则运算
    这个作业属于哪个课程计科1/2班这个作业要求在哪里结对项目这个作业的目标实现一个自动生成小学四则运算题目的命令行程序团队成员姓名学号梁昊东3121005000李铭伟3121004145github链接:https://github.com/e1ecb0t/e1ecb0t/tree/main/cacul......
  • Linux第二章文件管理 2023.9.24
    计算机科学与技术1班 学号:20218503姓名:曾庆玲一目录操作首先:cd/cd//切换到根目录1、创建目录mkdirswxy2、查看目录(1)pwd 显示当前所在目录(2)pwd-p显示实际工作目录(3)ls-a查看隐藏的目录与文件(4)ls-l 查看目录与文件的属性3、切换目录(1)cd不加任何路......
  • 22消息队列实现进程间的通讯
    通过消息队列实现进程间的通讯 frommultiprocessingimportProcess,Queuefromtimeimportsleep#向队列中写入数据defwrite_task(q):ifnotq.full():foriinrange(5):message='消息'+str(i)q.put(message)......
  • 2023.9.24——每日总结
    学习所花时间(包括上课):0h代码量(行):0行博客量(篇):1篇今天,上午休息,下午休息。我了解到的知识点:休息一天明日计划:1.上课;......
  • 9.24 模拟赛
    时间安排8:00~8:40看题,除a没有会的8:40~9:20写完a9:20~12:00一直看b,想差分约束,然后坐牢总结智力感觉有所下降认真看题面题解An遍dijkstra,然后建图,再跑dijkstraB#include<bits/stdc++.h>#definemod998244353#definelllonglongusingnamespacestd;llC[......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》第三周学习笔记
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......
  • 21python实现简单的消息队列
      frommultiprocessingimportQueue'''q=Queue(num)若括号中没有指定最大可接收的消息数量,或数量为负值,那么就代表可接收的消息数量没有上限(直到内存的尽头)。函数也是队列的初始化。Queue.qsize()返回当前队列包含的消息数量。Queue.empty()如果队列为空,返回T......