问题
从1开始计数,计算倒数第k个结点的指针。例如:
思路
整着数到第k,然后前后一块往后走,前边的走到头,后边的极为倒数第k个结点,图示
注意
- 传入空指针
- k大于结点的个数
代码
ListNode* LastNNode(ListNode *root, int n){ if (root == NULL || n <=0) return NULL; ListNode *cur = root; ListNode *pre = root; int cnt = 0; while (pre != NULL) { cnt++; if (cnt == n) break; pre = pre->next; } if (cnt < n) { return NULL; } else { cur = root; while (pre->next != NULL) { pre = pre->next; cur = cur->next; } return cur; }}
执行
View Code
推荐