【发布时间】:2020-04-17 03:56:12
【问题描述】:
我正在学习数据结构。今天,我想用链表来实现队列。因为我们有队列入口点的 FRONT 和 REAR 第一个索引。如果有人要求我使用 Linked List 实现 Queue,请确认我的以下实现(我能够在没有 REAR 对象的情况下实现 Queue 目标。)
这个实现有效吗?
class Queue
{
Node head;
class Node
{
public int Value;
public Node next;
public Node()
{
next = null;
}
}
public void addElement(int val)
{
if (head == null)
{
Node temp = new Node();
temp.Value = val;
head = temp;
return;
}
Node tempNode = head;
while (tempNode.next != null)
{
tempNode = tempNode.next;
}
Node newElement = new Node();
newElement.Value = val;
tempNode.next = newElement;
}
public void Dequeue()
{
if (head != null)
{
if (head.next != null)
{
head = head.next;
return;
}
head = null;
}
}
}
class Program
{
static void Main(string[] args)
{
Queue queue = new Queue();
queue.addElement(10);
queue.addElement(20);
queue.addElement(30);
queue.addElement(40);
queue.Dequeue();
queue.Dequeue();
queue.Dequeue();
queue.Dequeue();
}
}
【问题讨论】:
-
您应该将其发布到 Code Review。
-
这里的原因:我想确认我们是否需要在实现队列时同时实现 FRONT 和 REAR。
-
你不需要需要,就像你不需要链表来创建队列一样。但是两者都改变了事情,一个人应该知道有或没有两者会发生什么。例如性能/时间复杂度。
-
好的。我得到了它。谢谢@SamiKuhmonen
标签: c# data-structures collections linked-list queue