我有一个简单的链接列表似乎工作正常,但我有一个问题。如何仅打印最后一个节点?我有一个打印完整列表的功能
void printList()
{
curr = head;
while(curr != NULL)
{
cout << curr->data;
curr = curr->next;
}
}
而且我试图这样做但是我失败了
void printNode()
{
curr = head;
cout << curr->data;
curr = curr->next;
}
答案 0 :(得分:2)
假设方法可以访问“head”而无需作为参数发送,请尝试:
void printNode()
{
if(!head) {
cout<<"empty list"<<endl;
return;
}
listNode* curr = head;
while(curr->next) curr = curr->next; // Iterate to the last node
cout << curr->data;
}
答案 1 :(得分:1)
首先,你需要找到最后一个节点,然后你需要打印它。它可能看起来像这样:
void printList()
{
curr = head;
//if curr->next is NULL, we know that curr must be the last element
while(curr != NULL && curr->next != null)
{
curr = curr->next;
}
cout << curr->data;
}
答案 2 :(得分:0)
为了仅打印最后一个节点,您必须扫描整个列表,直到curr->next
为空,这样您才能最终到达最后一个节点。可以使用while循环轻松实现,每次循环检查curr->next != null
。在循环之后,curr
将指向最后一个元素。