给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
public ListNode reverseList(ListNode head) {
ListNode p=new ListNode();
while (head!=null) {
ListNode q=head.next;
head.next=p.next;
p.next=head;
head=q;
}
return p.next;
}
ListNode p=new ListNode();
ListNode q=p;
public ListNode reverseList(ListNode head) {
if(head==null)
return head;
if(head.next!=null)
reverseList(head.next);
head.next=q.next;
q.next=head;
q=head;
return p.next;
}
}
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回
新的头节点 。
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
public ListNode removeElements(ListNode head, int val) {
ListNode listNode=new ListNode();
listNode.next=head;
ListNode p=listNode;
while (listNode.next!=null) {
if(listNode.next.val==val) {
listNode.next=listNode.next.next;
}
else
listNode=listNode.next;
}
return p.next;
}
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)
输入:head = [1,2,3,4]
输出:[2,1,4,3]
public ListNode swapPairs(ListNode head) {
if(head==null||head.next==null)
return head;
ListNode p=new ListNode();
p.next=head;
ListNode q=p;
while (head.next!=null){
ListNode temp=head.next;
head.next=temp.next;
temp.next=head;
p.next=temp;
p=head;
head=p.next;
}
return q.next;
}
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
public ListNode removeNthFromEnd(ListNode head, int n) {
int sum=0,k=0;
ListNode head1=head;
while (head1!=null){
head1=head1.next;
sum++;
}
ListNode p=new ListNode();
p.next=head;
ListNode q=p;
int r = sum - n+1;
while (p.next!=null){
k++;
if(k==r){
p.next=p.next.next;
}
else
p=p.next;
}
return q.next;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/143052.html