您的位置:首页 > 其它

第一章链表

2016-01-28 13:35 183 查看
带头结点的单链表

//节点类
class Node<AnyType>{
public AnyType data;
public Node<AnyType> next;
public Node(){
data=null;
next=null;
}
public Node(AnyType data){
this.data=data;
next=null;
}
public Node(AnyType data,Node a){
this.data=data;
next=a;
}
public Node(Node a){
next=a;
}
}
//带头结点的单链表
public class MyLiskedList<AnyType> {
private int theSize;  //表的大小
private Node<AnyType> headNode;   //头节点
public MyLiskedList(){
Node<AnyType> p=new Node();
headNode=p;
theSize=0;
}
public boolean add(AnyType idx){
add(theSize,idx);
return true;
}

public void add(int size,AnyType a){
Node<AnyType>newNode=new Node(a);
Node<AnyType> p=headNode;
for(int i=0;i<size;i++){
p=p.next;
}
newNode.next=p.next;
p.next=newNode;
theSize++;

}
public AnyType remove(int idx){
if(idx<0||idx>theSize)
return null;
Node<AnyType>p=headNode;
AnyType e = null;
for(int i=0;i<idx;i++){
p=p.next;
}
p.next=p.next.next;
theSize--;
return e;

}
public AnyType get(int idx){
return getNode(idx).data;
}
private Node<AnyType>getNode(int idx){
if(idx<0||idx>theSize){
System.out.println("超出范围");
return null;
}
Node<AnyType> p=headNode;
for(int i=0;i<idx+1;i++){

p=p.next;
}
return p;

}
public static void main(String[]args){
MyLiskedList<String> a=new MyLiskedList<String>();
a.add("a");
a.add("b");
a.add("c");
a.add("d");
a.remove(2);
for(int i=0;i<3;i++)
System.out.println(a.get(i));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: