我想要让用户提供数字并将它们填充到一个链表中,然后再将它们打印出来。然而,我的实现方式只会打印出第一个输入的数字。我是在链表头插入的,你能帮我找出问题所在吗?
struct Node
{
int data;
Node* next;
};
Node newNode(int num, Node *next_node)
{
Node node;
node.data = num;
node.next = next_node;
return node;
}
void headInsert(Node* head, int num)
{
Node* tmp;
tmp = new Node;
tmp->data = num;
tmp->next = head;
head = tmp;
}
int main(int argc, char* argv[])
{
if (argc < 2)
{
std::cout<< "No input for linked list!! \n" <<
"Usage: ./linkedlist 2 3 567 12 .. etc."
<<"\n";
return 0;
}
Node *head, *temp;
head = new Node;
head->data = atoi(argv[1]);
head->next = NULL;
headInsert(head, atoi(argv[2]));
headInsert(head, atoi(argv[3]));
temp = head;
while(temp != NULL)
{
std::cout << temp->data<< " ";
temp = temp->next;
}
return EXIT_SUCCESS;
}
C++
,为什么你不使用它呢?我不仅指std::list
,而是为什么不以面向对象的方式实现你的列表/节点结构?使用没有成员函数的struct
,并使用自由函数来修改它非常类似于C
。如果这是你自己的练习,我至少部分理解。但我祈祷这不是今天C++
课程的状态。 - Chad