一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

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

Java采用循環(huán)鏈表結構求解約瑟夫問題

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

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

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

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

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

以下java版的答案:

復制代碼代碼如下:

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

 

        int j= 0;               //從s開始報數(shù),依次輸出出列人的編號
        LinkNode p = head;      //計數(shù)起點
        while(j<s-1){
            j++;
            p = p.next;
        }
        while(p.next != p){
            j = 1;
            while(j<d-1)   //計數(shù)的起始點
            {
                j++;
                p = p.next;
            }        
            System.out.print(p.next.data + " ");  // 輸出出列的節(jié)點號
            p.next = p.next.next;
            p = p.next;                                //不斷指向下一個節(jié)點            
        }
        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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 双子母性本能在线观看 | 国产乱子伦在线观看不卡 | 国产区香蕉精品系列在线观看不卡 | 色老板在线播放 | 羞羞视频免费观 | 亚洲国产香蕉视频欧美 | 韩剧在线观看 | 成人快手破解版 | 扒开黑女人p大荫蒂老女人 扒开大腿狠狠挺进视频 | 国产精品天天看特色大片不卡 | 草莓视频旧版 | 国产人妖ts在线视频网 | 国产麻豆精品免费视频 | 大胸孕妇孕交pregnantsex 大象视频污 | 国产免费专区 | 亚洲成人一区在线 | 亚洲欧美专区精品久久 | 二次元美女互摸隐私互扒 | 蜜桃视频一区二区 | 深夜视频免费看 | 800精品国产导航 | 久久久久嫩草影院精品 | 国产三级跑 | 四缺一写的小说 | 性关系视频网站 | 国产这里有精品 | 黄动漫软件车车好快的车车 | 福利一区二区在线观看 | 丝瓜黄瓜茄子西红柿秋葵榴莲 | 日本一区二区视频免费播放 | 色婷婷影院在线视频免费播放 | 日本精品久久久久中文字幕 1 | 99精品影视 | 欧美摘花破处 | 成人在线观看网站 | 国产日韩欧美综合在线 | 操b图片 | 国产亚洲一级精品久久 | 边吃奶边扎下面 | 成人在线一区二区三区 | 91亚洲精品国产自在现线 |