我在这里直接写的是循环链表。
先是申请了一个节点类:
有三个成员,一是前继结点,一是后继结点,然后是数据。
提供三个构造函数。
public class list_node
{
private list_node
next;
private list_node
previous;
private T data;
public list_node(){
this.data=null;
this.next=null;
this.previous=null;
}
public list_node(T t){
this.data=t;
this.next=null;
this.previous=null;
}
public list_node(list_node
previous,list_node
next,T data){ this.next=next; this.previous=previous; this.data=data; } public T Getdata(){ return this.data; } public list_node
Getnxt(){ return this.next; } public list_node
Getpre(){ return this.previous; } public void SetData(T t){ this.data=t; } public void Setnxt(list_node
node){ this.next=node; } public void Setpre(list_node
node){ this.previous=node; } }public class MyList
implements IList
{ private list_node
head; private list_node
end; private list_node
start; public MyList(){ Initialized(); } public MyList(T t){ Initialized(); this.head.SetData(t); } public Iiterator
iteroater() { // TODO Auto-generated method stub return new MyIterator
(this); } @Override public list_node
add(T t) { list_node
node = newnode(); node.SetData(t); return node; } @Override public T get(list_node
p) { // TODO Auto-generated method stub return p.Getdata(); } public list_node
gethead(){ return this.head; } @Override public void delete(list_node
p) { } @Override public void revise(list_node
p) { // TODO Auto-generated method stub } @Override public void Initialized() { head=newnode(); head.Setnxt(head); head.Setpre(head); this.end=head; this.start=head; } @Override public list_node
newnode() { return new list_node
(); } public void putback(list_node
node){ end.Setnxt(node); node.Setpre(end); node.Setnxt(start); start.Setpre(node); end=node; } public void GetData(){ System.out.println(start.Getdata()); while(start!=end) { start=start.Getnxt(); System.out.println(start.Getdata()); } } public int Length(){ int length=1; while(start!=end){ length++; start=start.Getnxt(); } return length; } }
然后是链表类,主要实现的功能是往链表后面添加数据,获得链表的头数据,还有就是获得链表的长度。
这是实现链表数据结构的一个简单的小实例。
实现链表,主要是先构造一个结点类,然后构造链表类,结点类依据不同的链表应该是有不同的成员,主要体现在是否有前继后继。
我只是实现了简单的功能,如果要进行封装的话,可以再设计一个迭代器查看链表的数据,或是对数据进行一些操作。我这里有写就不上传了