我正在尝试创建一个函数,该函数接受指向链接列表头部的指针,然后返回指向列表末尾项目的指针,如果它为空,则返回NULL
。
这是我到目前为止所写的内容:
MusicRec * getLastItem(MusicRec * theList)
{
MursicRec * currentElement;
currentElement = theList->next;
while(currentElement != NULL)
{
theList = currentElement;
currentElement = currentElement->next;
}
return(0);
}
我感到困惑的是我需要返回theList
或currentElement
?
答案 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
}