在这里插入代码片
class Node{
public int data;
public Node next;
public Node(int data){
this.data=data;
}
}
public class MylIinkedList {
public Node head;//保存单列表的头节点的引用
public void addFirst(int data) {//头插法 单边表的插入要先绑后面
Node node = new Node(data);
node.next = head;
this.head = node;
}
public void addLast(int data) {//尾插法
Node node = new Node(data);
if (this.head == null) {
this.head = node;
return;
}
Node cur = this.head;
while (cur != null) {
cur = cur.next;
}
cur.next = node;
}
public boolean contains(int key) {
Node cur = this.head;
while (cur != null) {
if (cur.data == key) {
return true;
}
cur=cur.next;
}
return false ;
}
public int size(){ //单链表长度
int count=0;
Node cur=this.head;
while(cur!=null){
count++;
cur=cur.next;
}
return count;
}
public void addIndex( int index,int data){
Node node=new Node(data);
Node cur=searchIndex(index );
node.next=cur.next;
cur.next =node;
if(index==0){
addFirst(data) ;
return ;
}
if(index==this.size()){
addLast(data);
return ;
}
}
private Node searchIndex(int index){
if(index<0||index>this.size() ){
throw new RuntimeException("index位置不合法!");
}
Node cur=this.head;
while(index -1!=0){
cur=cur.next;
index --;
}
return cur;
}
public void display() {//打印单链表
Node cur = this.head;
while (cur != null) {
System.out.println(cur.data+" ");
cur = cur.next;
}
}
}