Flyingis

          Talking and thinking freely !
          Flying in the world of GIS !
          隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
          數據加載中……

          理解數組和鏈表的最基本特性

          作者:Flyingis

           

          數組和鏈表是數據結構中老生常談的問題,在指針或是引用這些概念出來之前,數組就能用來實現鏈表的功能。這里所說的鏈表指的就是用指針或對象的引用來設計的鏈表。

          在實際的應用開發中,數組由于它天生的種種特性(參考Java容器分析數組》),更多的會被開發人員所想到用到,但所有的數據結構都有它特定的適用場合。眾所周知,數組和鏈表最大的區別在于,使用數組能夠快速訪問數組中的每個元素,而使用鏈表可以方便的操縱每個數據項。下面通過兩個很有趣的例子說明了它們各自的區別與優勢。

          雖然在JDKJava提供了List接口及其接口的實現(ArrayList/LinkedList)對鏈表數據結構提供了有力的支持,具體可以參考Java容器分析—List和Set但下面數學上關于Josephus問題的實現僅使用了自定義的最簡單的鏈表結構。

          /**

           * 根據命令行輸入的N值,計算出所有小于N的素數

           * 是素數將數組元素值設為true,否則設為false

           */

          class ArrayApp {

            public static void main(String[] args) {

          int N = Integer.parseInt(args[0]);

          boolean[] a = new boolean[N];

          for (int i = 2; i < N; i++)

            a[i] = true;

          for (int i = 2; i < N; i++)

            if (a[i] != false)

              for (int j = i; j*i < N; j++)

                a[i*j] = false;

          for (int i = 2; i < N; j++)

            if (a[i])

              System.out.println(“” + i);

          }

          }

          /**

           * N個有編號的小球圍成一圈,每個M-1個就拿去一個小球,計算最后剩下的球的位置

           */

          class LinkApp {

            static class Node {

          int value;

          Node next;

          Node (int v) { v = value; }

          }

          public static void main(String[] args) {

            int N = Integer.parseInt(args[0]);

            int M = Integer.parseInt(args[1]);

            Node first = new Node(1);

            Node x = first;

            for (int i = 2; i <= N; i++)

              x = (x.next = new Node(i));

            x.next = first;

            while (x != x.next) {

              for (int i = 1; i < M; i++)

                x = x.next;

              x.next = x.next.next;

          }

          System.out.println(“最后剩下的小球:” + x.value);

          }

          }

          posted on 2006-01-24 23:42 Flyingis 閱讀(2235) 評論(0)  編輯  收藏 所屬分類: Algorithm

          主站蜘蛛池模板: 炎陵县| 东乡族自治县| 休宁县| 林芝县| 宾阳县| 嘉祥县| 陇西县| 佛山市| 镶黄旗| 招远市| 边坝县| 洛扎县| 神木县| 长兴县| 大足县| 万宁市| 兴宁市| 老河口市| 安化县| 北流市| 阳朔县| 方正县| 且末县| 会理县| 株洲市| 承德县| 普格县| 珲春市| 镇原县| 芦溪县| 阿坝县| 北票市| 阳春市| 新竹市| 定南县| 大冶市| 武山县| 松阳县| 武城县| 华坪县| 朝阳区|