题目:
将一个单链表逆置输出
解题思路:
思路一:先找到最后一个,打印最后一个,然后指向链表最后一个指针前移,知道遇到链表第一个节点。时间复杂度O(n^2),空间复杂度O(1)
void PrintTail(SListNode *pFirst)
{
SListNode *end = NULL;
while (end != pFirst){
SListNode *pNode = pFirst;
while (pNode->pNext != end)
{
pNode = pNode->pNext;
}
printf("%d ", pNode->data);
end = pNode;
}
printf("\n");
}
思路二:通过递归实现:
void PrintTailR(SListNode *pFirst)
{
if (pFirst == NULL)
return;
PrintTailR(pFirst->pNext);
printf("%d ", pFirst->data);
}