データ構造--ヘッドレス一方向非循環チェーンの実現
2529 ワード
無頭一方向非循環リンク表:構造が簡単で、データを単独で保存することは一般的ではない.実際には他のデータ構造としてのサブ構造が多い.
//
public interface ILinked {
//
void addFirst(int data);
//
void addLast(int data);
// , 0
boolean addindex(int index,int data);
// key
boolean contains(int key);
// key
int remove(int key);
// key
void removeAllKey(int key);
//
int getLength();
//
void display();
//
void clear();
}
上のインターフェースを実現します.public class ILinkedImpl implements ILinked {
// Node
class Node {
private int data;
private Node next;
//
public Node(int data){
this.data=data;
this.next=null;
}
}
private Node head;
public ILinkedImpl(){
this.head=null;
}
//----------------------------------------------
//
@Override
public void addFirst(int data) {
Node node=new Node(data);
if(this.head==null){
this.head=node;
}else{
node.next=this.head;
this.head=node;
}
}
//------------------------------------------
//
@Override
public void addLast(int data) {
Node node=new Node(data);
Node cur=this.head;
if(this.head==null){
this.head=node;
}else{
while(cur.next!=null){
cur=cur.next;
}
cur.next=node;
}
}
//------------------------------------------
// , 0
// index
public void checkindex(int index){
if(index>getLength()||index<0){
throw new UnsupportedOperationException("index ");
}
}
// index-1
public Node indexbefore(int index){
checkindex(index);
Node cur=this.head;
int count=0;
if(index==0){
return null;
}
while(cur.next!=null && count