/********************************/ /*   連結リスト     */ import java.awt.*; class algolist1_item { int index; // リスト番号 static int li; // 生成されたリストの数 algolist1_item next; // 次のリストへの参照 algolist1_item() { // コンストラクタ index=li++; // リスト番号割り当て&リスト総数更新 next=null; } } public class algolist1 extends java.applet.Applet { Button newB; Button lb[]=new Button[6]; // リストボタン Checkbox ch; Panel p; algolist1_item lstart; public void start(){ p=new Panel(); ch=new Checkbox("Delete"); p.add(ch); for (int i=0;i<6;i++) { // リストボタン作成 lb[i]=new Button(String.valueOf(i)); p.add(lb[i]); } add(p); lstart=new algolist1_item(); // 最初のリスト生成 repaint(); } public boolean action(Event evt,Object What) { for (int i=0;i<5;i++) if (evt.target==lb[i]) { algolist1_item wl=lstart,wl2; for (int j=0;j4) return; sw=ss.next; // 追加先の次の要素を保存 ss.next=new algolist1_item(); // 要素を追加 ss.next.next=sw; // 保存しておいた要素にリンク repaint(); } private void delete(algolist1_item ss) { // ssを削除 algolist1_item sl=lstart; if (lstart.next==null) // 要素が一つしかなければ中止 return; if (ss==lstart) // 最初の要素 lstart=lstart.next; else { while (sl.next!=ss) // 前の要素を取得 sl=sl.next; sl.next=ss.next; } repaint(); } private void drawList() { // リスト表示 algolist1_item sl=lstart; int i; for (i=0;i<6;i++) lb[i].hide(); i=0; do { lb[i].setLabel(String.valueOf(sl.index)); lb[i].show(); i++; sl=sl.next; } while (sl!=null); } public void paint(Graphics g) { drawList(); } }