这是推送功能。
void push(struct node **head)
{
struct node *temp;
temp = new node;
cout<<"enter the value";
cin>>temp->data;
temp->link=NULL;
if(*head==NULL)
{
*head=new node;
*head=temp;
}
else{
temp->link=*head;
*head=temp;
}
}
这就是我打电话的方式。
struct node *start=NULL;
push(&start);
这是节点
struct node{
int data;
struct node *link;
};
现在问题是:我认为列表没有更新。开始始终为空。不知道为什么。
编辑:
void display(struct node **head)
{
struct node *temp;
temp=*head;
if(*head==NULL){
cout<<"\nthe head is NULL\n";
}
while(temp!=NULL)
{
cout<<temp->data;
temp=temp->link;
}
}
int main() {
struct node *start=NULL;
push(&start);
push(&start);
push(&start);
push(&start);
push(&start);
display(&start);
return 0;
}
输入:
1
2
3
4
5
现在显示出来应该是5 4 3 2 1但是有一些错误。
答案 0 :(得分:3)
paxdiablo在评论中提到了答案:C ++已通过引用传递。例如:
#include <iostream>
struct node
{
int data;
struct node *link;
};
void push(node*& head)
{
struct node *temp = new node;
std::cout << "enter the value";
std::cin >> temp->data;
temp->link = head;
head = temp;
}
int main()
{
node *start = NULL;
push(start);
return 0;
}
答案 1 :(得分:0)
替代实施:
void push(struct node** head_reference, int new_data)
{
struct node* a_node = new node;
a_node->data = new_data;
a_node->link = (*head_reference);
(*head_reference) = a_node;
}
int main() {
struct node* head = NULL;
push(&head, 10);
// rest of your code here
return 0;
}