나는 링크 된 목록을 통해 숫자 목록을 정렬하는 꽤 기본적인 프로그램을 가지고 있습니다.C++에서 연결된 목록에 포인터 전달
여기서 끊기고있는 부분은 요소를 목록의 시작 부분에 삽입해야하는 경우입니다.
void addNode(node *root)
{
int check = 0; //To break the loop
node *current = root; //Starts at the head of the linked list
node *temp = new node;
cout << "Enter a value for x" << endl;
cin >> temp->x;
cin.ignore(100,'\n');
if(temp->x < root->x)
{
cout << "first" << endl;
temp->next=root;
root=temp;
cout << root->x << " " << root->next->x; //Displays 12 15, the correct response
}
을하지만 경우,이 기능을 실행 한 후, 나는
을 시도 : 여기그 루트 레벨> X = 15을 가정하고 사용자 입력 (12)는 메시지가 표시되면 가정 문제 코드의 덩어리입니다
cout << root->x;
main()에 돌아 오면 다시 15를 표시합니다. 그래서 코드
root=temp;
은 일단 기능을 떠나면 손실됩니다. 이제 * root에 대한 다른 변경 사항 (예 : LL에 다른 요소를 추가하고 그 옆에 root->를 지정)이 수행됩니다.
제안 사항?
당신이 전면에 노드를 추가하는 addNode 명을하려는거야 목록에 추가하거나 노드를 정렬 된 위치에 실제로 추가 하시겠습니까? 그 의도는 분명하지 않다. 함수 밖에서 값을 읽고 전달해야합니다. – Matt