hello-algo/codes/csharp/chapter_stack_and_queue/deque.cs
2022-12-30 17:22:52 +08:00

96 lines
1.9 KiB
C#

public class DLinkNumbers
{
public int value;
public DLinkNumbers front;
public DLinkNumbers rear;
}
public class Deque
{
private static DLinkNumbers head, end;
private static int length;
public int Empty()
{
return length;
}
public int EnHead(int value)
{
DLinkNumbers temp = new DLinkNumbers { value = value };
if (head == null)
{
end = temp;
head = temp;
}
else
{
temp.front = head;
head.rear = temp;
head = temp;
}
length += 1;
return 1;
}
public int OutHead()
{
if (length == 0)
return -1;
int number = head.value;
head = head.front;
length -= 1;
return number;
}
public int EnEnd(int value)
{
DLinkNumbers temp = new DLinkNumbers { value = value };
if (end == null)
{
end = temp;
head = temp;
}
else
{
temp.front = end;
end.rear = temp;
end = temp;
}
length += 1;
return 1;
}
public int OutEnd()
{
if (length == 0)
return -1;
int number = end.value;
end = end.front;
length -= 1;
return number;
}
}
class TestForDeque
{
[Test]
public void Do()
{
Deque de = new Deque();
de.EnHead(12);
de.EnHead(13);
de.EnHead(14);
de.OutEnd();
de.OutEnd();
de.OutEnd();
de.OutEnd();
de.OutEnd();
de.EnEnd(12);
de.EnEnd(13);
de.EnEnd(14);
de.OutHead();
de.OutHead();
de.OutHead();
}
}