C ++中链表的makeList和Print函数

时间:2015-02-01 18:19:40

标签: c++ string linked-list

以下是我通过读入输入列表制作列表的代码。它应该按照读入它们的顺序返回一个指向字符串列表的指针。然后在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;
    }
}

1 个答案:

答案 0 :(得分:0)

  1. 您没有将current->val设置为value

    current = new Node();
    current->val = value; // <--
    
  2. 更改while函数的printList()循环中的条件:

    while (temp->next != NULL)
    

    while (temp != NULL)
    

    并切换两个语句并将>>更改为<<

    while(tmp != NULL) {
        cout << tmp->val << endl;
        tmp = tmp->next;
    }