题目:
找出单链表的倒数第k个元素
思路:
建立两个单链表。让第一个先走k步后,第二个开始走。这样当第一个走完时,第二个单链表剩下K个元素。
代码:
Node *GetLastElem(Node *node, int k)
{
Node *first, *second;
first = node;
second = node;
int len;
//计算单链表长度
len = Length_LinkList(node);
//让第一个单链表先走k步
for(int i = 0; i < k; i++)
{
if(first->next == NULL)
{
return node;
}
first = first->next;
}
//第一个先走k步后,两个同时走,第一个走完时,第二个刚好剩下k个
while(first->next != NULL)
{
first = first->next;
second = second->next;
}
return second;
}
注:代码中所用到的计算单链表长度的Length_LinkList()函数请看“单链表基础”