删除链表的倒数第N个节点(C语言)

您所在的位置:网站首页 删除链表的倒数第n个节点c语言完整代码 删除链表的倒数第N个节点(C语言)

删除链表的倒数第N个节点(C语言)

2024-07-13 15:07| 来源: 网络整理| 查看: 265

删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

说明:给定的n保证是有效的。

给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.

分析:首先遍历链表中一共有多少个元素,然后查找倒数第n个元素,并把它删除。

        下边是代码实现:

1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * struct ListNode *next; 6 * }; 7 */ 8 9 10 struct ListNode* removeNthFromEnd(struct ListNode* head, int n){ 11 struct ListNode* list = head; 12 int i=0; 13 while(list!=NULL){ 14 i++; 15 list=list->next; 16 } 17 list = head; 18 if(n==i){ 19 head=head->next; 20 free(list); 21 return head; 22 } 23 int index=1; 24 while(index!=i-n){ 25 list=list->next; 26 index++; 27 } 28 struct ListNode *body = list->next; 29 list->next=list->next->next; 30 free(body); 31 return head; 32 }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3