From 11bca229010b76b6b3473e17132803cd3e5906cc Mon Sep 17 00:00:00 2001 From: liangjinglin Date: Mon, 13 Jan 2025 14:43:47 +0800 Subject: [PATCH] =?UTF-8?q?2025-01-12=20=E7=BA=A6=E7=91=9F=E5=A4=AB?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=88=E7=8E=AF=E5=BD=A2=E9=93=BE=E8=A1=A8?= =?UTF-8?q?=EF=BC=89=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/LinkedList/CircleLinkedList.java | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/dataANDcalc/java/LinkedList/CircleLinkedList.java b/src/dataANDcalc/java/LinkedList/CircleLinkedList.java index 6211fdd..48388ce 100644 --- a/src/dataANDcalc/java/LinkedList/CircleLinkedList.java +++ b/src/dataANDcalc/java/LinkedList/CircleLinkedList.java @@ -61,6 +61,38 @@ public class CircleLinkedList { } + /** + * @param k + * @param m + * 优化改进约瑟夫队列 + */ + private void joseph(int k, int m){ + JosephNode temp = first; + while (true){ + if (temp.next == first){ + break; + } + temp = temp.next; + } + for(int i = 0; i < k-1; i++){ + temp = temp.next; + first = first.next; + } + while (true) { + if (temp == first){ + break; + } + for(int i = 0; i < m-1; i++){ + temp = temp.next; + first = first.next; + } + System.out.println(first.toString() + "出列"); + first = first.next; + temp.next = first; + } + } + + public static void main(String[] args) { CircleLinkedList circleLinkedList = new CircleLinkedList(); Scanner scan = new Scanner(System.in); @@ -82,9 +114,11 @@ public class CircleLinkedList { circleLinkedList.show(); } if ("j".equals(handle)){ + System.out.println("请输入开始位置:"); + int k = scan.nextInt(); System.out.println("请输入出队报数数字:"); int m = scan.nextInt(); - circleLinkedList.joseph(m); + circleLinkedList.joseph(k,m); } } scan.close();