cls
$maxQueueConut =5
$queneCount =0
$queueHead =0
$queuetail =0
$queue = New-Object int[] ($maxQueueConut)
function EnQueue([int] $Value)
{
if($queneCount -eq $maxQueueConut)
{
throw "quene is full"
}
else
{
$script:queneCount++
$script:queue[$queueHead] = $Value
}
$script:queueHead = NextIndex $queueHead
"Enqueue:$Value queneCount=$queneCount queueHead=$queueHead queuetail=$queuetail Queue = $queue "
}
function DeQueue
{
if($queneCount -eq 0)
{
throw "queue is empty"
}
else
{
$script:queneCount--
$returnValue =$queue[$queuetail]
$script:queuetail = NextIndex $queuetail
}
"Dequeue:$returnValue queneCount=$queneCount queueHead=$queueHead queuetail=$queuetail Queue = $queue"
}
function NextIndex([int] $currentIndex)
{
if($currentIndex -eq $maxQueueConut-1)
{
$currentIndex =0
}
else
{
$currentIndex++
}
return $currentIndex
}
测试代码:
EnQueue 1
EnQueue 2
EnQueue 5
EnQueue 4
EnQueue 6
DeQueue
DeQueue
DeQueue
DeQueue
EnQueue 3
结果:
Enqueue:1 queneCount=1 queueHead=1 queuetail=0 Queue = 1 0 0 0 0
Enqueue:2 queneCount=2 queueHead=2 queuetail=0 Queue = 1 2 0 0 0
Enqueue:5 queneCount=3 queueHead=3 queuetail=0 Queue = 1 2 5 0 0
Enqueue:4 queneCount=4 queueHead=4 queuetail=0 Queue = 1 2 5 4 0
Enqueue:6 queneCount=5 queueHead=0 queuetail=0 Queue = 1 2 5 4 6
Dequeue:1 queneCount=4 queueHead=0 queuetail=1 Queue = 1 2 5 4 6
Dequeue:2 queneCount=3 queueHead=0 queuetail=2 Queue = 1 2 5 4 6
Dequeue:5 queneCount=2 queueHead=0 queuetail=3 Queue = 1 2 5 4 6
Dequeue:4 queneCount=1 queueHead=0 queuetail=4 Queue = 1 2 5 4 6
Enqueue:3 queneCount=2 queueHead=1 queuetail=4 Queue = 3 2 5 4 6