国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 15:20:20
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 都安| 建始县| 苏尼特左旗| 十堰市| 宁城县| 繁昌县| 奉新县| 敖汉旗| 安多县| 咸丰县| 交口县| 会理县| 阿合奇县| 宁南县| 淮安市| 禄丰县| 山西省| 淳安县| 资阳市| 郑州市| 新密市| 桐柏县| 巴马| 永登县| 察隅县| 瑞安市| 卓尼县| 汉川市| 页游| 泸定县| 濉溪县| 成武县| 施秉县| 晋城| 苏尼特右旗| 获嘉县| 平山县| 三原县| 莲花县| 巩留县| 永春县|