여기, 함수 내부 삽입 내 코드나는 점 <strong>노드</strong>에 <strong>머리</strong>를 전달하는 경우
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
void insert(ListNode *&head,int value)
{
ListNode *node;
node = head;
if(!node)
{
//node = new ListNode(value);
head = new ListNode(value);
}
else
{
while(node->next != NULL)
node = node->next;
node->next = new ListNode(value);
}
}
void print(ListNode *head)
{
ListNode *node = head;
for(;node!=NULL;){
printf("%d ",node->val);
node = node->next;
}
}
int main(int argc,char *argv[])
{
ListNode *head = NULL;
insert(head,0);
insert(head,1);
insert(head,2);
print(head);
return 0;
}
입니다, 그리고 노드 = 새 ListNode (값);, C++에서 함수 내에서 포인트 참조에 대한 혼란 스러워요 누군가 날을내는 데 도움이 희망을 남기고는, 삽입 작업이 실패하고 머리 내가 새로운 직접 머리에 메모리를 할당 사용 NULL.But 여전히 아웃.
무엇을하고 있는지 이해하는 내 인라인 주석을 찾기 및 클래스와 함께 C++ 스타일을 사용하는 대신 전역 함수를 사용합니까? –
@ Code-Apprentice ListNode 생성자와'operator new'의 사용법이 C++ 회랑을 따라 충분히 깊지는 않습니까? 적어도 이니셜 라이저 목록을 사용하고 있습니다.이 목록은 처음 시작할 때 가장 많이하는 것 이상입니다. – WhozCraig
@WhozCraig'List' 클래스는 각 함수에'head' 포인터를 전달할 필요성을 없애고 각 함수 서명을 좀 덜 복잡하게 만듭니다. 또한'head'가 멤버 필드 일 가능성이 높으므로 여기에 표시된 문제를 제거합니다. –