3

リンクリストにユーザーから提供された番号を記入し、再度印刷してもらいたい。ただし、以下に示す私の実装では、最初の入力番号のみが出力されます。リストの先頭に挿入します。何が悪いのかわかりますか?

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;
    }
4

1 に答える 1

5

ではheadInsert()ローカル変数head = tmp;のみを変更します。 head

あなたはそれをポインタへの参照として渡すことができます、Node*& head

于 2012-07-23T15:37:19.637 に答える