記事一覧
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
|