LeetCode删除链表的倒数第n个结点

xiaoxiao2021-02-28  4

 

1.首先遍历一遍链表,用count计数记录一共有多少个结点

2.第二遍便利链表,用count1找到删除结点的位置

3.删除结点

/**  * Definition for singly-linked list.  * struct ListNode {  *     int val;  *     struct ListNode *next;  * };  */ struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {      if(head == NULL){         return head;     }     struct ListNode *current_node = head;     int count = 0;     while(current_node != NULL){         current_node = current_node->next;         count++;     }     struct ListNode *current_node1 = head;     int count1 = 0;     if(n == count){         struct ListNode *delete_node1 = head;          head = current_node1->next;         free(delete_node1);         return head;     }     while(current_node1->next != NULL && count1 < count - n - 1){         current_node1 = current_node1->next;         count1++;     }     if(count1 == count - n - 1&& current_node1->next != NULL){         struct ListNode *delete_node = current_node1->next;         current_node1->next = delete_node->next;         free(delete_node);         return head;     }     return head; }

 

转载请注明原文地址: https://www.6miu.com/read-1750221.html

最新回复(0)