C++ 在链表前面添加新节点时出现问题
我试图在链表的开头添加一个新节点。因此,新添加的节点将成为链表的新头,而链表的前一头将成为第二个节点。 这是我的密码:C++ 在链表前面添加新节点时出现问题,c++,list,reference,new-operator,singly-linked-list,C++,List,Reference,New Operator,Singly Linked List,我试图在链表的开头添加一个新节点。因此,新添加的节点将成为链表的新头,而链表的前一头将成为第二个节点。 这是我的密码: #include <iostream> #include <iomanip> class Node { public : int data ; Node * next ; } ; void printNodes(Node * node) ; voi
#include <iostream>
#include <iomanip>
class Node
{
public :
int data ;
Node * next ;
} ;
void printNodes(Node * node) ;
void pushFront(Node * headReference, int newNode) ;
int main()
{
Node * head = NULL,
* second = NULL,
* third = NULL ;
head = new Node() ;
second = new Node() ;
third = new Node() ;
head -> data = 1 ;
head -> next = second ;
second -> data = 2 ;
second -> next = third ;
third -> data = 3 ;
third -> next = NULL ;
pushFront(head, 4) ;
printNodes(head) ;
return 0 ;
}
//Printing the linked list nodes.
void printNodes(Node * node)
{
int counter = 0 ;
while(node != NULL)
{
++ counter ;
std::cout << "Node " << std::setfill('0')
<< std::setw(2)
<< counter
<< " --> "
<< node -> data
<< std::endl ;
node = node -> next ;
}
std::cout << "Linked List finished" << std::endl ;
}
//Inserting a new node on the front of the list.
void pushFront(Node * headReference, int newData)
{
Node * newNode = new Node() ;
newNode -> data = newData ;
newNode -> next = headReference ;
headReference = newNode ;
}
#包括
#包括
类节点
{
公众:
int数据;
节点*下一步;
} ;
无效打印节点(节点*节点);
void pushFront(节点*头参照,int newNode);
int main()
{
节点*head=NULL,
*第二个=空,
*第三个=空;
头=新节点();
第二个=新节点();
第三个=新节点();
头部->数据=1;
头->下一个=秒;
第二->数据=2;
第二->下一个=第三个;
第三->数据=3;
第三->下一步=空;
前推(头部,4);
打印节点(头);
返回0;
}
//打印链接列表节点。
无效打印节点(节点*节点)
{
int计数器=0;
while(节点!=NULL)
{
++计数器;
标准:cout 3
链接列表已完成
我得到的结果是:
节点01-->1
节点02-->2
节点03-->3
链接列表已完成您必须通过引用传递头部节点。例如
void pushFront( Node * &headReference, int newData )
{
headReference = new Node { newData, headReference };
}
否则,函数将处理头节点的副本。在函数中更改副本不会影响原始头节点的值
另一种方法是C方法,通过引用传递意味着通过指针传递对象
void pushFront( Node * *headReference, int newData )
{
*headReference = new Node { newData, *headReference };
}
可称为
pushFront( &head, 4 );