
package LinkByHand;public class LinkList {public Node head =null;//尾插法public void insert(int value) {Node node = new Node(value);if(head ==null) {head =node;return;}Node index = head;while(index.next!=null) {index =index.next;}index.next = node;}//头插法public void insertHead(int value) {Node node = new Node(value);if(head ==null) {head =node;return;}node.next =head;head=node;}//获取链表的长度public int getLen() {int count = 0;Node index = head;while(index!=null) {count++;index =index.next;}return count;}//链表中查数据public int search(int value) {int position =-1;Node index = head;while(index!=null) {position++;if(index.value==value) {return position;}index =index.next;}return -1;} //指定位置插入public void insertAtPosition(int value,int position) {if(position<0||position>getLen()) {System.out.println("插入位置不合理");return;}if(position==0) {insertHead(value);}else if(position==getLen()){insert(value);}else {Node node =new Node(value);Node index =head;Node pre = null;int current =0;while(index!=null) {if(current==position) {node.next = index;pre.next =node;return;}pre = index;index =index.next;current++;}}}//删除指定位置的节点public void deleteAtPosition(int position) {if(position<0||position>=getLen()) {System.out.println("删除位置不合理");return;}if(position==0) {head =head.next;}else {Node index = head;Node pre =null;int current =0;while(index!=null) {if(current==position) {//deletepre.next=index.next;return;}pre =index;index =index.next;current++;}}}//输出链表中的值 @Overridepublic String toString() {String res="[ ";Node index =head;while(index!=null) {res+=index.value+" ";index =index.next;}res+="]";return res;}
}