从链表C中获取最后一个元素

时间:2014-03-28 20:54:28

标签: c linked-list

我正在尝试创建一个函数,该函数接受指向链接列表头部的指针,然后返回指向列表末尾项目的指针,如果它为空,则返回NULL

这是我到目前为止所写的内容:

MusicRec * getLastItem(MusicRec * theList)
{
MursicRec * currentElement;
currentElement = theList->next;
while(currentElement != NULL)
{
    theList = currentElement;
    currentElement = currentElement->next;
}

return(0);
}

我感到困惑的是我需要返回theListcurrentElement

3 个答案:

答案 0 :(得分:6)

试试这个:)

MusicRec  *getLastItem(MusicRec *theList)
{
    MursicRec  *currentElement;

    currentElement = theList;
    if (currentElement == NULL) // return NULL is list is empty cf (Captain girafe && learningC)
        return (NULL);
    while(currentElement->next != NULL) // check if next element is null then currentElement = next else return currentElement
      currentElement = currentElement->next;
    return (currentElement);
}

答案 1 :(得分:2)

你应该返回theList 当循环结束时currentElement为NULL。所以theList将指向最后一个节点 并确保函数收到的theList不为NULL。

答案 2 :(得分:0)

递归实现相同:

MusicRec  *getLastItem(MusicRec *theList)
{
    if (theList == NULL) // return NULL if list is empty
        return NULL;
    if (theList -> next == NULL) // return 1st element if it's a single element list
        return theList;
    return getLastItem(theList->next); // recurse
}