В настоящее время у меня есть оператор if, выполняемый из функции, который выглядит следующим образом, но не компилируется, хотя я знаю, что это из-за кода, который я выполняю между условиями 2 и 3.
Я пытаюсь создать функцию, которая будет вставлять новый узел в отсортированный связанный список целых чисел в правильной позиции. Сделай это, мне нужно проверить на три условия. Во-первых, является ли список пустым. Если это так, то 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;
}