尝试实现向现有列表添加新元素的程序时遇到问题。这是:
#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的元素。有什么问题?
答案 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);