記事一覧 06/05 変更. P23-1/2: アクセス修飾子 (Tree.java のリスト) //------------------------------------------- package lib; class Node { int data; // 重複無効 Node l, r; Node(int k){data = k; l = r = null;} } public class TreeS { Node top; public TreeS(int k) {top = new Node(k);} public void search(int k){ Node p = top.r; while(p != null){ if(p.data < k) p = p.r; else if(p.data > k) p = p.l; else break; } if(p != null) System.out.println(k); else System.out.println("?"); } public void insert(int k) { Node p, q; q = top; p = top.r; while(p != null){ q = p; if(p.data < k) p = p.r; else if(p.data > k) p = p.l; else return; // 重複無効化 } p = new Node(k); if(q.data < k || q == top) q.r = p; else if(q.data != k) q.l = p; } public void delete(int k) { Node p, q1, q2, q3; q1 = top; p = q1.r; while(p.data != k){ q1 = p; if(p.data < k) p = p.r; else p = p.l; if(p == null) return; // k 不在 } if((p.l == null) || (p.r == null)){ if(p.l != null) q2 = p.l; else q2 = p.r; if(q1.l == p) q1.l = q2; else q1.r = q2; } else { q2 = p.r; q3 = q2; while(q3.l != null){ q2 = q3; q3 = q3.l; } p.data = q3.data; if(q3 == q2) p.r = q2.r; else q2.l = q3.r; } } public void show(String s, Node p){ if(p == null) return; show(s+"L", p.l); System.out.println(s+": "+p.data); show(s+"R", p.r); } public void show(){show(" ", top.r);} } //------------------------------------------- |
派生プログラムの説明の前に,準備として P22 を P23 の ように書き換えます.とりあえず,これを実行すると P22 と同じ出力が得られることを確認してください. N.B. progCpp.pdf (2011-06-23) の注記参照. 書き換えの趣旨はクラス TreeS と Main を別のファイルに することです.Cでは分割コンパイル時に extrn を使いま したが,Java の場合は public を使います.(C++ と同 様に)アクセス修飾子には public,protected,private があります. P23-2/2: アクセス修飾子 (Main.java のリスト) //------------------------------------------- package chk; import lib.TreeS.*; public class Main { public static void main(String[] args) { lib.TreeS t = new lib.TreeS(0); t.insert(7); t.insert(3); t.insert(9); t.insert(2); t.insert(5); t.show(); t.search(3); t.delete(3); t.show(); t.search(3); t.insert(3); t.delete(5); t.show(); } } //------------------------------------------- 実行結果 //------------------------------------------- run: LL: 2 L: 3 LR: 5 : 7 R: 9 3 LL: 2 L: 5 : 7 R: 9 ? L: 2 LR: 3 : 7 R: 9 構築成功 (合計時間: 0 秒) //------------------------------------------- [2-16] Javaの文法 - Wikipedia > 4.3 アクセス修飾子 http://ja.wikipedia.org/wiki/Java%E3%81%AE%E6%96%87%E6%B3%95 [2-17] Java 入門 | 修飾子 http://msugai.fc2web.com/java/modify.html [2-18] 修飾子 - とほほのWWW入門 http://www.tohoho-web.com/java/modifier.htm |
最新の画像[もっと見る]
-
g++による演習 (5) 11年前
-
g++による演習(4) 11年前
-
g++による演習 (3) 11年前
-
g++による演習 (2) 11年前
-
g++による演習 (1) 11年前
-
構造化チャート 11年前
-
gccによる演習 (7) 11年前
-
離散コサイン変換 (5) 11年前
-
L8プログラミング (0) 11年前
-
離散コサイン変換 (4) 11年前
※コメント投稿者のブログIDはブログ作成者のみに通知されます