递归返回链表中的最后一个节点

时间:2013-01-27 22:30:17

标签: c++ list linked-list

我正在尝试编写函数,以递归方式返回链表的最后一个节点,并声明任何局部变量。这是对的吗?

ListNode* lastPtr(ListNode* list){
If(list = NULL)
Return NULL;
Else 
List = lastPtr(list->next);
If(list->next = NULL)
Return list;
}

语言是c ++

2 个答案:

答案 0 :(得分:3)

ListNode *lastPtr(ListNode* list) {
return (list && list->next) ? lastPtr(list->next) : list;
} 

答案 1 :(得分:1)

C ++中的等号是,如在C中,Java是==而不是=

尝试更正您的代码。

ListNode * lastNode(ListNode *list)
{
    if (list!=NULL)
    {
        if (list->next==NULL)
            return list;
        else return lastNode(list->next);
    }
    else return NULL;
}