현재 코드로 인해서 알 수는 있지만 함수 내에서 실행되는 if 문은 이와 같이 보이지만 컴파일되지 않는 if 문이 있습니다. 조건 2와 3 사이에서 실행.'if'문 조건 사이에 코드 삽입
내가 뭘하려는 건 올바른 위치에 정수의 정렬 된 연결 목록에 새 노드를 삽입하는 함수를 만드는 것입니다. 이렇게하면 세 가지 조건을 테스트해야합니다. 첫 번째는 목록이 비 었는지 여부입니다. 그렇다면 condition1
을 만족하고 모두 좋다. 두 번째 조건은 현재 목록에있는 노드가 하나만 있는지 여부입니다. 이 경우에 condition2
이 만족되며 다시 좋은 결과를 얻을 수 있습니다.
이제 문제가 발생합니다. 처음 두 조건이 충족되지 않으면 목록에 노드가 두 개 이상 포함될 수 있습니다. 이 경우 두 개의 임시 포인터를 초기화해야하며, 하나는 Head
을 가리키고, 하나는 Head -> Next
을 가리키면 목록의 현재 위치를 추적하고 새 노드를 목록에 쉽게 삽입 할 수 있습니다.
이들은 condition2
과 condition3
사이에있는 코드를 사용하여 초기화됩니다. condition3
이 의존하기 때문에 생성해야하지만 condition1
전에 세그먼트를 생성하면 세그먼트 화 오류가 발생합니다.
누구나 그러한 진술을 구현하는 방법에 대해 조언 해 줄 수 있습니까? 나는 가능한 한 간단하게 코드를 유지하고 싶습니다. 그리고 완전히 작동하는 LinkedList :: Insert()
함수는 현재 if
문장의 엉망이며 일부 코드를 따르는 데 문제가 있습니다.
int NewElement;
Node *NewNode;
NewNode = new Node;
NewNode -> Element = NewElement;
Node *TempPrevious;
Node *TempNext;
if (ListIsEmpty) // condition1
{
// some code
return true;
}
else if (ListContainsOnlyOneNode) // condition2
{
// some code
return false;
}
TempPrevious = Head;
TempNext = Head -> Next;
else if (NewNode -> Element > TempNext -> Element) // condition3
{
// some code
return true;
}