删除链表中结点:
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。
因为我们无法访问要被删除节点的前一个节点,所以只能用后一个节点的内容去覆盖要被删除的节点。然后删除后一个节点(后一个节点由于它的地址已经不在前一个节点中有储存了,所以无法访问,也就相当于删除了。)
class Solution {
public void deleteNode(ListNode node) {
node.val=node.next.val;
node.next=node.next.next;
}
}
反转链表:
注意:要新建一个节点用来储存next节点,否则更改为向前指后指针会丢失。
/**
* Definition for singly-linked list.
* 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; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while(curr != null){
ListNode next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
}
}