向列表添加新元素的功能

时间:2014-01-13 19:37:58

标签: list

尝试实现向现有列表添加新元素的程序时遇到问题。这是:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

struct person{ int v;
           struct person *next;

         };

void add(struct person *head, int n)
    { struct person *nou;
    nou=(person*)malloc(sizeof(struct person));
    nou->next=head;
    head=nou;
    nou->v=n;
    }

int main()
{
struct person *head,*current,*nou;

head=NULL;

nou=(person*)malloc(sizeof(struct person));

nou->next=head;
head=nou;
nou->v=10;


add(head,14);

current=head;
while(current!=NULL)
{ cout<<current->v<<endl;
   current=current->next;

}



return 0;  
}

当我运行它时,似乎只有值为10的元素。有什么问题?

1 个答案:

答案 0 :(得分:1)

您需要传入指向head指针的指针,以便可以更改其值。

void add(struct person **head, int n)
{ 
    struct person *nou;
    nou=(person*)malloc(sizeof(struct person));
    nou->next=*head;
    *head=nou;
    nou->v=n;
}

这样称呼:

add(&head,14);