C++ 消除链接列表中的额外调用
我目前正在实现一个链表(在我休息的时候!),我发现我的函数结构如下:C++ 消除链接列表中的额外调用,c++,linked-list,C++,Linked List,我目前正在实现一个链表(在我休息的时候!),我发现我的函数结构如下: void traverseList(node *head){ if(head != 0){ while(head->next !=0){ cout << head->data << endl; head = head->next; } //one extra for the node at the end cout &l
void traverseList(node *head){
if(head != 0){
while(head->next !=0){
cout << head->data << endl;
head = head->next;
}
//one extra for the node at the end
cout << head->data << endl;
}
}
void遍历列表(节点*头){
如果(头!=0){
while(head->next!=0){
下一步是收集数据;
}
//为末端的节点额外添加一个
不能改变这一点:
if(iterator != 0){
while(iterator->next !=0){
cout << iterator->data << endl;
iterator = iterator->next;
}
//one extra for the node at the end
cout << iterator->data << endl;
}
if(迭代器!=0){
while(迭代器->下一步!=0){
下一步是收集数据;
}
//为末端的节点额外添加一个
cout data您的功能可以大大简化为:
void traverseList(node *head)
{
for(node * iterator = head; iterator; iterator = iterator->next)
{
cout << iterator->data << endl;
}
}
void遍历列表(节点*头)
{
对于(节点*iterator=head;iterator;iterator=iterator->next)
{
不能数据那新节点
到底在那里做什么?@Tom正如Mike注意到的,你为什么在这里创建一个新节点对象?你没有必要创建内存泄漏。你是对的-我不需要。
void traverseList(node *head)
{
for(node * iterator = head; iterator; iterator = iterator->next)
{
cout << iterator->data << endl;
}
}