클래스 멤버 함수로 머리글을 초기화하면 머리글이 NULL이 아닌 이유는 무엇입니까? 그것은 까다로운 부분입니다. 클래스 멤버 함수를 사용하여 변수 초기화
#include <iostream>
using namespace std;
struct node
{
int data;
node *next;
};
class linked_list
{
private:
node *head;
public:
void push(node *head, int data);
void printList(node *head);
void printMiddle(node *head);
void makeHeadNull(node *head);
};
void linked_list::push(node *head, int data)
{
node *newNode=new node;
if(head==NULL)
{
head=newNode;
}
else {
newNode->data = data;
newNode->next = head;
head = newNode;
}
}
void linked_list::printMiddle(node *head)
{
node *slow_ptr = head;
node *fast_ptr = head;
if (head!=NULL)
{
while (fast_ptr != NULL && fast_ptr->next != NULL)
{
fast_ptr = fast_ptr->next->next;
slow_ptr = slow_ptr->next;
}
cout<<slow_ptr->data<<" ";
}
void linked_list::printList(node *head)
{
while(head!=NULL)
{
cout<<head->data<<" ";
head=head->next;
}
}
void linked_list::makeHeadNull(node *head)
{
head=NULL;
}
int main()
{
node *head;
linked_list l;
l.makeHeadNull(head);
l.push(head, 0);
l.push(head, 1);
l.push(head, 2);
l.push(head, 3);
l.push(head, 4);
l.printMiddle(head);
}
나는 생성자 내부에 머리를 초기화하고 싶었다,하지만 난 그런 식으로 머리를 초기화 할 때, 헤드 노드는 항상 주 안에 NULL있다. 생성자에서 머리글을 초기화하고 함수 밀어 넣기의 매개 변수로 전달하려면 오류가 발생합니다.
코드 예제를 질문과 관련된 부분으로 좁혀주십시오. [MCVE]를 만드는 방법을 참조하십시오. – user0042
좋아, 이제 최소 버전을 게시 할 것입니다 – Tat
당신이 말하는이 생성자는 어디에 있습니까? – molbdnilo