以下是我通过读入输入列表制作列表的代码。它应该按照读入它们的顺序返回一个指向字符串列表的指针。然后在print函数中,我想打印出链表中的所有元素,当下一个元素为NULL时停止。我不明白为什么我的代码不起作用。任何帮助将不胜感激。
struct Node{
string val;
Node* next;
};
Node* makeList(){
string value;
Node *head = NULL;
Node *current = NULL;
Node *last = NULL;
while (cin >> value){
current = new Node();
if(head== NULL){
head = current;
}
if(last!= NULL){
last->next=current;
}
last=current;
}
if(last != NULL) {
last->next = NULL;
}
return head;
}
void printList (Node* p)
{
Node* tmp = p;
while(tmp->next != NULL) {
tmp = tmp->next;
cout >> tmp->val >> endl;
}
}
答案 0 :(得分:0)
您没有将current->val
设置为value
:
current = new Node();
current->val = value; // <--
更改while
函数的printList()
循环中的条件:
while (temp->next != NULL)
到
while (temp != NULL)
并切换两个语句并将>>
更改为<<
:
while(tmp != NULL) {
cout << tmp->val << endl;
tmp = tmp->next;
}