목록 앞에 항목을 추가하려고합니다. 기본적으로, 내가 여기서하려고하는 것은 :C++ 더 명확한 방법으로 연결된 목록에 항목을 추가하십시오.
null 목록으로 시작;
숫자 읽기;
번호를 저장하기 위해 새 노드가 만들어지고 다음 포인터가 null을 가리키는 호출 기능.
목록이 비어 있으면
는,이 새로운 노드는리스트 (단 요소)이 목록의 헤드에 더 많은 요소,이 새로운 노드 점이며 경우가된다의 시작 새로운 머리.
내 함수는 (적어도 디버거에서는 볼 수 있습니다.)하지만 내 목록을 반환 한 후에는 비어 있고 머리는 다시 null입니다.
struct node{
int data;
node *next;
};
void insert_front(node *list, int num){
node * newnode = new (node);
newnode->data = num;
newnode->next = nullptr;
if (list == nullptr)
list = newnode;
else{
newnode->next = list;
list = newnode;
}
}
int main()
{
int n;
node *head = nullptr;
cout << "Input numbers to store (0 finishes input): ";
cin >> n;
while (n != 0){
insert_front(head, n);
cin >> n;
}
return 0;
}
또한이 시도하지만 그것도 컴파일되지 않습니다 :
void insert_front(node &lst, int num){
node *newnode = new node();
newnode->data=num;
newnode->next=lst;
lst=newnode;
}
나는 의도적으로 "깨끗한"코드를 내가받을 수만큼 등 OOP, 템플릿, 형식 정의를 사용하여 피 모든 것이 어떻게 작동하는지 이해할 수 있습니다. 노드 * & 목록
void insert_front(node* &lst, int num){
node *newnode = new node();
newnode->data=num;
newnode->next=lst;
lst=newnode;
}
당신이 당신의 "LST"포인터의 사본을 수정됩니다 참조를 사용하므로하지 않는 경우 목록 것 :
. 사본을 수정해도 원래 변수는 수정되지 않습니다. 포인터를 참조로 전달하십시오. –