问题1:链表反转
问题描述:将原链表反转。
Node* reverseList(Node *head)
{
if (head == NULL)
{
return NULL;
}
Node *oldHead = head;
Node *newHead = NULL;
Node *temp = NULL;
while(oldHead)
{
newHead = oldHead;
oldHead = oldHead->next;
newHead->next = temp;
temp = newHead;
}
return newHead;
}
问题2:找出单链表倒数第k个元素
分析:使用两个指针,这是链表问题典型的方法之一前后指针。
Node* findReK(Node *head, int k)
{
if (head == NULL)
{
return NULL;
}
Node *first = head;
Node *second = head;
int i = 0;
while(first)
{
first = first->next;
++i;
if (i > k-1)
{
second = second->next;
}
}
return second;
}
<