线性表— 链表
单向链表
public class LinkList<T>{
private Node head;
private int N;
private class Node {
T item;
Node next;
public Node (T item, Node next){
this.item = item;
this.next = next;
}
}
public LinkList(){
this.head=new Node (null,null);
this.N = 0;
}
public void clear(){
head.next = null;
this.N = 0;
}
public int length(){
return N;
}
public boolean isEmpty(){
return N == 0;
}
public T get (int i){
Node n =head.next;
for (int index ==0 ;index <i; index++){
n=n.next;
}
return n.item;
}
public void insert(T t){
Node n =head ;
while (n.next !=null){
n = n.next;
}
Node newnode = new Node(t,null)
n.next = newnode;
N++;
}
public void insert(int i ,T t){
Node pre = head ;
for (int index =0; index<=i-1:index++){
pre =pre.next;
}
Node curr = pre.next;
Node newcode =new Node(t,curr);
pre.next = newcode;
N++;
}
public T remove(int i){
Node pre = head ;
for (int index =0; index<=i-1:i++){
pre =pre.next;
}
Node curr = pre.next;
Node nextNode =curr.next;
pre.next = nextNode;
N--;
return curr.item;
}
public int indexof(T t){
Node n =head;
for (int i=0 ;n.next!=null;i++){
n=n.next;
if(n.item.equals(t)){
return i;
}
}
return -1;
}
}
双向列表
public void insert(T t){
if (isEmpty()){
Node newNode =new Node(t,head,null);
last =newNode;
head.Next = last;
}else{
New oldLast =last;
Node newNode =new Node(t,oldlast,null);
oldlast = newNode;
last =newNode ;
}
N++;
}
public void insert(int i ,T t){
Node pre = head;
for(int index=0;index<i;index++){
pre= pre.next;
}
Node curr =pre.next;
Node newNode =new Node (t,pre,curr);
pre.next=newNode;
curr.pre=newNode;
N++;
}
public T remove(T t){
Node pre = head;
for(int index=0;index<i;index++){
pre= pre.next;
}
Node curr =pre.next;
Node nextnode = curr.next;
pre.next=nextnode;
nextnode.pre= pre;
N--;
return curr.item;
}