线性队列
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataStruct_Pro.Page_4
{
class QueueNode
{
public int data;
public QueueNode next;
public QueueNode(int data)
{
this.data = data;
this.next = null;
}
}
class Linked_Queue
{
public QueueNode first;
public QueueNode last;
public Linked_Queue()
{
this.first = null;
this.last = null;
}
public bool Enqueue(int value) //入队
{
var node = new QueueNode(value);
if(this.last == null)
{
first = node;
}
else
{
last.next = node;
}
last = node;
return true;
}
public int PopFirst()
{
int value = -1;
if(first != null)
{
if (first == last) last = null;
value = first.data;
first = first.next;
return value;
}
else
{
return -1;
}
}
public void show()
{
var node = first;
while(node != null)
{
Console.WriteLine("[{0}]", node.data);
node = node.next;
}
Console.WriteLine();
}
}
class Class7
{
public static void Main(string[] args)
{
Linked_Queue queue = new Linked_Queue();
int temp;
int value;
Console.WriteLine("=========================================");
Console.WriteLine("使用链表来实现队列");
while (true)
{
Console.WriteLine("请选择操作:[1]在队尾加入新的元素 [2]出列一个元素 [3结束输入]");
temp = int.Parse(Console.ReadLine());
switch (temp)
{
case 1:
Console.Write("请输入需要添加的元素: ");
value = int.Parse(Console.ReadLine());
queue.Enqueue(value);
break;
case 2:
Console.WriteLine("出列的元素是:{0}", queue.PopFirst());
break;
case 3:
Console.WriteLine("现在队列中存在的元素是: ");
queue.show();
break;
}
}
}
}
}
环形队列
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataStruct_Pro.Page_4
{
class Class8
{
//环形队列
public static int front = -1, rear = -1;
public static int val;
public static int[] queue = new int[5];
public static void Main(string[] args)
{
String strM;
while (rear < 5 && val != -1)
{
Console.Write("请输入一个值存入队列,取出输入0,结束输入-1 : ");
strM = Console.ReadLine();
val = Convert.ToInt32(strM);
if (val == 0)
{
if(front == rear)
{
Console.Write("队列已经空了\n");
break;
}
front++;
if(front == 5)
{
front = 0;
}
Console.WriteLine("取出的队列值是[{0}]", queue[front]);
queue[front] = 0;
}
else if (val != -1 && rear < 5)
{
if(rear + 1 == front || rear == 4 && front <= 0)
{
Console.Write("队列已经满了\n");
break;
}
rear++;
if(rear == 5)
{
rear = 0;
}
queue[rear] = val;
}
}
Console.WriteLine("\n队列剩余数据:\n");
if (front == rear)
{
Console.WriteLine("队列已经空了.");
}
else
{
while(front != rear)
{
front++;
if(front == 5)
{
front = 0;
}
Console.Write("[{0}]", queue[front]);
queue[front] = 0;
}
}
Console.WriteLine();
Console.ReadLine();
}
}
}