覚書: 自前リストがんばってみた
未完
PList.java
もう違いを忘れた。
PList.java
public class PList {
private int index=0;
private int selfid;
private PList next = null;
private int length =1;
public PList() { this.selfid=(int)(Math.random()*100); }
public PList(int id){ this.selfid=id;}
/** addNext() nextがnullならPlist要素を追加する
*/
void addNext(PList next) {
if (this.next==null){
this.next=next;
next.reindex(this.index);
}
System.err.println("d|len"+getLength()+";id:"+next.getId()+"");
}
/** callback function */
private void reindex(int pindex){
/* F(A+1)=F(A)
next.index = index+1;
next.next.index= next.index+1;
next.next.next.index= next.next.index+1;
*/
getNext().index=pindex+1;
getNext().getNext().reindex(getNext().index);
}
/** add(PList next) PListを末尾に追加。 addNextに依存 */
public void add(PList next){
if (this.next==null) {
this.addNext(next);
} else {
this.getNext().add(next);
}
}
/** getNext() nextを返す */
PList getNext(){return this.next;}
/** get(i) 指定した番号の要素を返す まちがいコード */
public PList get(int i){
if (index==i){
return this;
}
else {
return getNext();
}
}
public PList get() {return ((this.next==null)?this:next.get());} // get() 末尾の要素を返す(旧getLast())
public int getLength(){ return (this.next==null?index+1:next.getLength()); } // 長さをとる関数
public void setId(int id){this.selfid=id;} // どうでもよい
public int getId() {return selfid;} // どうでもよい
/**
printNodes(); 要素全体をプリントアウト
再帰呼び出している。
*/
public void printNodes(){
System.out.print("["+index+"; "+getId()+ "], ");
if (this.next!=null) {
next.printNodes();
}
}
/**
printEach() 。
printNodes()と同じ動作をするべき。
長さからfor loopしている。
*/
public void printEach(){
for (int i=0; i<=this.getLength()-1;i++){
System.out.print(this.get(i).getId()+ " - ");
}
}
}
JUGEMテーマ:コンピュータ
もう違いを忘れた。
PList
public class PList {
private int index=0;
private int selfid;
private PList next = null;
private int length =1;
public PList() { this.selfid=(int)(Math.random()*100); }
public PList(int id){ this.selfid=id;}
/** addNext() nextがnullならPlist要素を追加する
*/
void addNext(PList next) {
if (this.next==null){
this.next=next;
next.index = index+1; //
//next.reindex();
}
System.err.println("d|len"+getLength()+";id:"+next.getId()+"");
}
/** callback function */
private void reindex(int preidx,int aftidx){
/* F(A+1)=F(A)
next.index = index+1;
next.next.index= next.index+1;
next.next.next.index= next.next.index+1;
*/
}
/** add(PList next) PListを末尾に追加。 addNextに依存 */
public void add(PList next){
if (this.next==null) {
this.addNext(next);
} else {
this.getNext().add(next);
}
}
/** getNext() nextを返す */
PList getNext(){return this.next;}
/** get(i) 指定した番号の要素を返す まちがいコード */
public PList get(int i){
if (index==i){
return this;
}
else {
return getNext();
}
}
public PList get() {return ((this.next==null)?this:next.get());} // get() 末尾の要素を返す(旧getLast())
public int getLength(){ return (this.next==null?index+1:next.getLength()); } // 長さをとる関数
public void setId(int id){this.selfid=id;} // どうでもよい
public int getId() {return selfid;} // どうでもよい
/**
printNodes(); 要素全体をプリントアウト
再帰呼び出している。
*/
public void printNodes(){
System.out.print("["+index+"; "+getId()+ "], ");
if (this.next!=null) {
next.printNodes();
}
}
/**
printEach() 。
printNodes()と同じ動作をするべき。
長さからfor loopしている。
*/
public void printEach(){
for (int i=0; i<=this.getLength()-1;i++){
System.out.print(this.get(i).getId()+ " - ");
}
}
}
コメント
コメントを投稿
「コメントを投稿できるユーザー」の範囲は変更される可能性があります。