为啥这个链表程序没有给出任何输出?
Posted
技术标签:
【中文标题】为啥这个链表程序没有给出任何输出?【英文标题】:Why is this linked list program not giving any output?为什么这个链表程序没有给出任何输出? 【发布时间】:2021-08-26 12:21:18 【问题描述】:所以我做了这两个关于链表的简单函数。一个在前面添加一个节点,另一个只是从头到尾按顺序显示链表。我想知道为什么这段代码不会给我任何输出。
#include <iostream>
using namespace std;
class Node
public:
int data;
Node *next;
;
Node *head;
void addFront(Node *head, int item)
Node *temp = new Node();
temp->data = item;
temp->next = head;
head = temp;
void traverse(Node *head)
Node *temp = head;
while(temp!=NULL)
cout << temp->data << " ";
temp = temp->next;
int main()
addFront(head, 1);
addFront(head, 2);
addFront(head, 3);
traverse(head);
【问题讨论】:
因为在循环开始之前traverse()
中的temp
为NULL。
不得不抱怨 C 风格的链表是用 C++ 教授的。
【参考方案1】:
您正在对addFront()
中的head
指针的副本进行操作。你有
将指针传递给指针:
void addFront(Node **head, int item)
整个代码可能如下所示:
#include <iostream>
using namespace std;
class Node
public:
int data;
Node *next;
;
Node *head;
void addFront(Node **head, int item)
Node *temp = new Node();
temp->data = item;
temp->next = *head;
*head = temp;
void traverse(Node *head)
Node *temp = head;
while(temp!=NULL)
cout << temp->data << " ";
temp = temp->next;
int main()
addFront(&head, 1);
addFront(&head, 2);
addFront(&head, 3);
traverse(head);
【讨论】:
我想就是这样。谢谢。 那么您应该将答案标记为已接受,@GauravSingh。 @GauravSingh:如果您喜欢这个答案,请将其标记为已解决,让其他用户知道您的问题已解决。另见What should I do when someone answers my question?【参考方案2】:addFront 的参数既是输入也是输出。 (节点*头) 它需要作为引用传递
【讨论】:
以上是关于为啥这个链表程序没有给出任何输出?的主要内容,如果未能解决你的问题,请参考以下文章