目錄
1. 洗掉鏈表中等于給定值 val 的所有節點,力扣
2. 反轉一個單鏈表,力扣
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;
}
};

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/387899.html
標籤:其他
上一篇:給你兩個非空的鏈表,表示兩個非負的整數。它們每位數字都是按照逆序的方式存盤的,并且每個節點只能存盤一位數字。請你將兩個數相加,并以相同形式回傳一個表示和的鏈表。
