c语言求倒数第n个节点
时间: 2023-12-13 15:04:48 浏览: 71
C语言实现输出链表中倒数第k个节点
5星 · 资源好评率100%
假设我们有一个单向链表,要求找到倒数第 n 个节点,可以使用双指针算法来实现。
具体做法是,定义两个指针 p1 和 p2,初始时都指向链表头节点。然后,将 p2 向前移动 n 个节点,此时 p1 和 p2 之间的距离就是 n。接着,同时将 p1 和 p2 向前移动,直到 p2 指向链表尾节点。此时,p1 就指向了倒数第 n 个节点。
具体代码如下:
```c
struct ListNode* getNthFromEnd(struct ListNode* head, int n) {
struct ListNode *p1 = head, *p2 = head;
// 将 p2 向前移动 n 个节点
for (int i = 0; i < n; i++) {
p2 = p2->next;
}
// 同时将 p1 和 p2 向前移动,直到 p2 指向链表尾节点
while (p2 != NULL) {
p1 = p1->next;
p2 = p2->next;
}
// p1 指向倒数第 n 个节点
return p1;
}
```
需要注意的是,如果链表长度小于 n,那么上述代码会返回空指针。如果需要在这种情况下返回错误代码或者抛出异常,可以在代码中进行相应的处理。
阅读全文