public class ListNode {
//节点
int val;
//指向
ListNode next;
ListNode() {}
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
//链表的新增
ListNode add(int key){
ListNode newList = new ListNode(key);
if (next == null){
next = newList;
return next;
}
//赋值给新的head
ListNode head = next;
while (head.next != null){
System.out.print("-"+head.val);
head = head.next;
}
newList.next = head.next;
head.next = newList;
return head;
}
//链表的显示
void showList(ListNode head){
if (head ==null){
System.out.println("链表是空哦~");
}
while (head.next != null){
System.out.println("链表当前值!"+head.val);
head = head.next;
}
System.out.println("链表当前值!"+head.val);
}
//链表的修改
void updateList(int index,int key,ListNode head){
if (head == null){
head = new ListNode();
head.val = key;
}
int i = 0;
while (head != null){
++i;
if (head == null){
head = new ListNode();
head.val = key;
}
if (i == index){
head.val = key;
}
head = head.next;
}
}
//链表的删除
ListNode delList(int val,ListNode head){
ListNode sentinel = new ListNode(0);
sentinel.next = head;
ListNode prev = sentinel, curr = head;
while (curr != null) {
if (curr.val == val)
prev.next = curr.next;
else
prev = curr;
curr = curr.next;
}
return sentinel.next;
}
//删除倒数第n个值
ListNode removeNthFromEnd(ListNode head, int n) {
//List list = new ArrayList();
ListNode listNode = head;
int size = 0;
while (listNode != null){
++size;
listNode = listNode.next;
}
if (n>size){
return head;
}
int index = (size -n)+1;
ListNode sentinel = new ListNode(0);
sentinel.next = head;
int i = 0;
ListNode prev = sentinel;
while (head != null) {
++i;
if (i == index) {
prev.next = head.next;
} else{
prev = head;
}
head = head.next;
}
return sentinel.next;
}
//删除链表中的节点
public void deleteNode(ListNode node) {
node.val = node.next.val;
node.next = node.next.next;
}
}