激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java采用循環鏈表結構求解約瑟夫問題

Java采用循環鏈表結構求解約瑟夫問題

2019-12-06 14:14shichen2014 JAVA教程

這篇文章主要介紹了Java采用循環鏈表結構求解約瑟夫問題的解決方法,是很多Java面試環節都會遇到的經典考題,這里詳細給出了約瑟夫問題的原理及Java解決方法,是非常經典的應用實例,具有一定的參考借鑒價值,需要的朋友可以參考下

本文實例講述了Java采用循環鏈表結構求解約瑟夫問題的方法。分享給大家供大家參考。具體分析如下:

這是第一次java考試的試題,對于沒看過鏈表的同學來說就不會做,現在回頭看看,還真不難。

約瑟夫問題:
有n個人,其編號分別為1,2,3,…,n。這n個人按順序排成一個圈。現在給定s和d,從第s個人開始從1依次報數,數到d的人出列,然后又從下一個人開始又從1開始依次報數,數到d的人又出列,如此循環,直到最后所有人出列為止。要求定義一個節點類,采用循環鏈表結構求解約瑟夫問題。

以下java版的答案:

復制代碼代碼如下:

import java.util.Scanner;
public class LinkNode {              //單向鏈表的節點類
    public int data;                 //存放節點值
    public LinkNode next;            //存放節點值的引用
    
    public LinkNode(int k){         //構造方法 ,值為k的節點
        data = k;
        next= null;
    }
}
 class Josephus{
    public static void printJosephus(int n,int s,int d){        
        int i=1;                    //創建長為n的循環列表
        LinkNode q,tail;
         
        LinkNode head = new LinkNode(i);
        head.next = head ;
        tail = head;             //第一個節點,尾巴和頭在一起
        
        while(i<n){
            i++;
            q = new LinkNode(i);    //增加一個新節點
            q.next = head ;        //節點的引用指向頭
            tail.next = q;            //最后一個元素的引用指向了q
            tail = q;              //那么最后一個元素就是q
        }

 

        int j= 0;               //從s開始報數,依次輸出出列人的編號
        LinkNode p = head;      //計數起點
        while(j<s-1){
            j++;
            p = p.next;
        }
        while(p.next != p){
            j = 1;
            while(j<d-1)   //計數的起始點
            {
                j++;
                p = p.next;
            }        
            System.out.print(p.next.data + " ");  // 輸出出列的節點號
            p.next = p.next.next;
            p = p.next;                                //不斷指向下一個節點            
        }
        System.out.print(p.data);
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int a = input.nextInt();
        int b = input.nextInt();
        Josephus.printJosephus(n, a, b);
    }
}

 

希望本文所述對大家的Java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品国产一区二区三区四区在线 | 欧美日韩在线影院 | 污污的视频在线观看 | 久久蜜臀一区二区三区av | 中文字幕亚洲情99在线 | 全免费午夜一级毛片真人 | 青青国产在线视频 | 国产午夜精品一区 | 久久久久一区二区三区 | 干色视频 | 日韩精品 | 国产精品片一区二区三区 | 欧美一级aa免费毛片 | 欧美日韩在线播放一区 | h久久| 国产精品视频一区二区三区四区五区 | 日韩黄色片免费看 | 欧美日本在线视频 | 91福利社在线 | 成人午夜视频免费看 | av电影免费看 | 成人福利在线看 | 久久久国产精品网站 | 亚洲国产精品一区二区三区 | 久久精品视频一区 | 欧美日韩亚洲视频 | 天天操天天操天天操天天操天天操天天操 | 欧美一级黄色影院 | 一区二区三区欧美精品 | 国产精品久久久久久久久久10秀 | 九九色精品 | 欧美一区二区三区久久 | 久久精品国产清自在天天线 | 亚洲码无人客一区二区三区 | 激情网站免费观看 | 日日操日日操 | 91精品国产乱码久久久久久久久 | 欧美一级黑人 | 在线看一区二区三区 | 精品国产1区2区3区 免费国产 | 深夜福利视频免费观看 |