链表小题(反转链表 求倒数第k个结点 删除链表指定结点)
Posted *insist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表小题(反转链表 求倒数第k个结点 删除链表指定结点)相关的知识,希望对你有一定的参考价值。
目录
3. 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个 中间结点 力扣
4. 输入一个链表,输出该链表中倒数第k个结点。 链表中倒数第k个结点_牛客题霸_牛客网
1. 删除链表中等于给定值 val 的所有节点。力扣
2. 反转一个单链表。力扣
3. 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个 中间结点 力扣
4. 输入一个链表,输出该链表中倒数第k个结点。链表中倒数第k个结点_牛客题霸_牛客网
1、删除链表中等于给定值 val 的所有节点
/**
* Definition for singly-linked list.
* struct ListNode
* int val;
* struct ListNode *next;
* ;
*/
struct ListNode* removeElements(struct ListNode* head, int val)
struct ListNode* prev=NULL,*cur=head;
while(cur)
if(cur->val==val)
struct ListNode* next=cur->next;
if(prev==NULL)
free(cur);
// prev=cur;
cur=next;
head=next;
else
prev->next=next;
free(cur);
cur=next;
else
prev=cur;
cur=cur->next;
return head;
2、反转一个单链表
/**
* Definition for singly-linked list.
* struct ListNode
* int val;
* struct ListNode *next;
* ;
*/
struct ListNode* reverseList(struct ListNode* head)
struct ListNode* newhead=NULL,*cur=head,*next=NULL,*next1=NULL;
while(cur)
next=cur;
next1=cur->next;
cur->next=newhead;
newhead=cur;
cur=next1;
return next;
3、给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个 中间结点
/**
* Definition for singly-linked list.
* struct ListNode
* int val;
* struct ListNode *next;
* ;
*/
struct ListNode* middleNode(struct ListNode* head)
struct ListNode* fast=head,*slow=head;
while(fast&&fast->next!=NULL)
fast=fast->next->next;
slow=slow->next;
// if(fast==NULL)
// break;
return slow;
4、输入一个链表,输出该链表中倒数第k个结点。
/*
struct ListNode
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL)
;*/
class Solution
public:
ListNode* FindKthToTail(ListNode* pListHead,unsigned int k)
ListNode* fast=pListHead,*slow=pListHead;
//双指针法->
// while(k--)
//
// if(fast==NULL)
// return NULL;
// fast=fast->next;
//
// while(fast&&slow)
//
// fast=fast->next;
// slow=slow->next;
//
// return slow;
//循环法->
int lenth=0;
while(fast)
++lenth;
fast=fast->next;
if(lenth<k)
return NULL;
int m=lenth-k;
while(m)
slow=slow->next;
m--;
return slow;
;
以上是关于链表小题(反转链表 求倒数第k个结点 删除链表指定结点)的主要内容,如果未能解决你的问题,请参考以下文章
链表经典面试题(反转链表,中间节点,倒数第k个节点,合并分割链表,删除重复节点)