一、题目:输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值。返回的结果用数组存储。
// 链表节点的定义
struct ListNode {
int val;
struct ListNode* next;
};
int* printListReversingly(struct ListNode* head) {
int counter = 0;
struct ListNode* current = head;
// 计算链表长度
while (current != NULL) {
counter++;
current = current->next;
}
// 分配数组内存
int *array = (int*)malloc(counter * sizeof(int));
// 将链表节点值逆序存储在数组中
for (int j = counter - 1; head != NULL && j >= 0; j--) {
array[j] = head->val;
head = head->next;
}
return array;
}
二、题目输入一个链表,输出该链表中倒数第 k 个结点。
解析:为了找到链表中倒数第 k 个节点,可以使用双指针法。具体步骤如下:
- 定义两个指针,一个称为快指针(fast),另一个称为慢指针(slow)。