Добавить элемент в двусвязном списке
Помогите пожалуйста, не могу удалить элементы, которые идут после числа больше 5
public unsafe struct ListNode
{
public double Data;
public ListNode* Next;
public ListNode* Prev;
}
public unsafe struct SingleLinkedList
{
public ListNode* Head;
public ListNode* Tail;
public int Count;
public static void AddFirst(SingleLinkedList* list, ListNode* Cur)
{
if (list->Head != null)
Cur->Next = list->Head;
else
list->Head->Prev = list->Head;
list->Tail = Cur;
list->Head = Cur;
list->Count++;
}
public static unsafe void AddLast(SingleLinkedList* list, ListNode* Cur)
{
if (list->Tail != null)
list->Tail->Next = Cur;
else
list->Head = Cur;
Cur->Prev = Cur;
list->Tail = Cur;
list->Count++;
}
}
static unsafe void Main(string[] args)
{
Console.WriteLine("End of list sign - 0");
SingleLinkedList* list = stackalloc SingleLinkedList[sizeof(SingleLinkedList)];
while (true)
{
Console.Write("Enter a number to list:");
int n = int.Parse(Console.ReadLine());
if (n == 0)
break;
ListNode* Current = stackalloc ListNode[sizeof(ListNode)];
Current->Data = n;
SingleLinkedList.AddLast(list, Current);
}
Console.WriteLine($"nNumber of elements - {list->Count}\n-----------------------------");
ListNode* Cur = list->Head;
Console.WriteLine("Output of list items");
while (Cur != null)
{
Console.WriteLine(Cur->Data);
Cur = Cur->Next;
}
Cur = list->Head;
while (Cur != null)
{
if (Cur->Data < 0)
{
// Вставляем элемент после текущего
ListNode* ItemAfterData = stackalloc ListNode[sizeof(ListNode)];
ItemAfterData->Data = 10;
ItemAfterData->Prev = Cur;
ItemAfterData->Next = Cur->Next;
if (Cur->Next != null)
Cur->Next->Prev = ItemAfterData;
Cur->Next = ItemAfterData;
}
Cur = Cur->Next;
}
Console.WriteLine("After deleting items:");
ListNode* Curr1 = list->Head;
if (Curr1->Data > 5 && Curr1 == list->Head)
{
Curr1 = Curr1->Next;
Curr1->Prev = null;
}
else
{
Curr1 = list->Head;
while (Curr1->Next != null)
{
if (Curr1->Data > 5)
{
Curr1->Prev->Next = Curr1->Next;
Curr1->Next->Prev = Curr1->Prev;
}
Curr1 = Curr1->Next;
}
if (Curr1->Next == null && Curr1->Data > 5)
{
Curr1->Prev->Next = null;
list->Tail = Curr1->Prev->Next;
}
}
ListNode* Cur2 = list->Head;
Console.WriteLine("Result list:");
Cur2 = list->Head;
while (Cur2 != null)
{
Console.WriteLine(Cur2->Data);
Cur2 = Cur2->Next;
}
Console.ReadKey();
}