Complexity with rear, end-of-insertion o (1)
Package linearlist;
After the implementation of the post-insertion and delete are easier, as far as possible in this direction to convert
public class Linearlist {
Class Node {
private int data;
Private node next;
Public node (int Data,node Next) {
this.data=data;
this.next=next;}
}
Private node head;
Private node Rear;//two references, pointing to an empty
private int length=0;
Public Linearlist () {
Head=new node (0,null);
rear=head;
}
void AddFirst (int Data)//head plug
{if (head.next==null) {
Node N=new node (data,null);
head.next=n; rear=n;length++;}
else {node n=new node (data,head.next); head.next=n;length++;}}
void AddLast (int Data)//tail plug
{node n=new Node (data,null);
rear.next=n;
rear=n;length++;}
void Addafter (node N,int data)//post-insertion
{node n1=n.next;
If (n1==null) {
Node N2=new node (data,null);
n.next=n2;rear=n2;length++;
}
else{
Node N2=new node (data,n.next);
n.next=n2;length++;
}
}
void Addbefore (node n,int data)//front plug
{addafter (n,n.data);
N.data=data;//no length++;
}
int Removefirst ()//header Delete
{if (head.next ==null) {return 0;}
If (head.next==rear) {
int data=rear.data;
head.next=null;
rear=head;length--; Return data;}
int data=head.next.data;
head.next=head.next.next;length--;
Return data;
}
int Removelast ()//tail Delete
{node N=head;int data=rear.data;
While (n!=null) {
If (n.next.equals (rear))
{n.next=null;rear=n;}
n=n.next;
}length--;
Return data;
}
int Removeafter (node N)//post-delete
{if (n.next==null) return 0;
Node N1=n.next;int data=n1.data;
If (n1.next==null) {
N.next =null;
rear=n;}
n.next=n1.next;
length--;
Return data;}
int Removebefore (node N)//pre-delete
{node n1=head.next;
If (n1==n) return 0;
While (n1!=null) {
If (n1.next.next.equals (N)) {
return Removeafter (n1);} When you encounter the first node that satisfies a condition, you jump out
n1=n1.next;
}//no length--;
Return 0;
}
int Ofdex (int Data)//search Order
{node N=head;int i=0;
While (n!=null) {
If (n.data==data) break;
n=n.next;i++;
}
Return i;
}
Boolean Isempty ()//empty
{if (head.next==null)
Return true;
Return false;}
int contains (int data)//sentenced to include
{node n=head;
While (n!=null) {
If (n.data==data) return 1;
n=n.next;
}
return-1;
}
Node Find (int data)//find nodes
{node n=head;
While (n!=null) {
If (n.data==data) return n;
n=n.next;
}
Return null;
}
public void Clear ()//empty
{head.next=null;
rear=head; length=0;
}
int size ()//linked List length
{return length;}
void Traverse ()//traversal
{if (head.next==null) {System.out.println ("the list is empty"); return;}
Node n=head.next;
For (int I=0;i<length;i++) {
System.out.println (n.data);
n=n.next;
}
}
Linklist (java edition, contain rear)