我很难理解linkedlist队列的enqueue方法的代码。我理解dequeue()、isEmpty()、First()和size()。首先,这里有一个LinearNode类来创建新的节点对象:
public class LinearNode<T> {
private T element;
private LinearNode<T> next;
/**
* Constructor: Creates an empty node.
*/
public LinearNode() {
next = null;
element = null;
}
/**
* Constructor: Creates a node storing the specified element.
* @param elem The specified element that is to be kept by this LinearNode.
*/
public LinearNode(T elem) {
next = null;
element = elem;
}
/**
* Returns the node that follows this one.
* @return The node that follows this one.
*/
public LinearNode<T> getNext() {
return next;
}
/**
* Sets the node that follows this one.
* @param node The node which is to follow this one.
*/
public void setNext(LinearNode<T> node) {
next = node;
}
/**
* Returns the element stored in this node.
* @return The element that is kept within this node.
*/
public T getElement() {
return element;
}
/**
* Sets the element stored in this node.
* @param elem The element that is to be kept within this node.
*/
public void setElement(T elem) {
element = elem;
}
}
下面是Enqueue方法
public void enqueue(T element) {
LinearNode<T> tmp = new LinearNode<T>(element);
if (isEmpty()) {
// set-up front to point to the new node
front = tmp;
} else {
// add the node after the old tail node
rear.setNext(tmp);
}
// update rear to point to the new node
rear = tmp;
count++; // increment size
}
在此编辑包含Enqueue方法的LinkQueue类:
public class LinkedQueue<T> implements QueueADT<T> {
private LinearNode<T> front; // front node of the queue
private LinearNode<T> rear; // rear node of the queue
private int count; // the current size of the queue
/**
* Constructor: Creates an empty Queue.
*/
public LinkedQueue() {
count = 0;
/* the following assignments are not actually necessary as references
* are initialised automatically to null,
* but they are included for clarity.
*/
front = null;
rear = null;
}
根据我从代码中所能理解的,前面和后面只是指针。它们用于指向队列的第一个和最后一个节点。所以当你说:
rear.setNext(tmp);
您正在将新节点标记在队列的最后一个节点之后。
考虑以下队列:1,2,3,4
enqueue(5)
rear=tmp
导致rear=5将后指针重置到最后一个节点
我得到了这些结构声明,以便实现使用循环链表的队列集合。 我试图创建一个函数,它将以指定的值排队(将其追加到队列的后面),我需要考虑队列为空和队列有一个或多个元素的两种情况。这是我到目前为止的代码: 这段代码给了我一个运行时错误,所以我不确定出了什么问题。在代码中,我假设队列-
对于使用c实现的链表队列,我的入队列和出队列有点问题。我的老师说模板是禁止使用的,我不能改变他给我们的公共和私人功能。我总是遇到一个分割错误。我真的不明白我做错了什么。我还包括了header、enqueue和dequeue函数。
本文向大家介绍C#通过链表实现队列的方法,包括了C#通过链表实现队列的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#通过链表实现队列的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。
几天来,我一直在试图弄清楚一个关于最近任务的问题,但我似乎无法理解它。问题如下: 创建一个PriorityQueue类,该类包含两个字段:NoopPriorities和LinkedList…它应该有一个构造函数,该构造函数接受一个int值。将该值分配给NoopPrioities…同时,添加与NumberOfPrioritiorities一样多的LinkedList。获取优先级和对象的Enqueue
我使用的参考资料如下: 出于效率考虑,我们选择队列的前面位于列表的开头,队列的后面位于列表的末尾。这样,我们从头部移除,并在尾部插入。 我想知道为什么在头部插入并在尾巴上移除会不好?这是因为在单链表中,删除尾节点并不容易,因为您必须访问之前的节点,而在单链表中执行此操作的唯一方法是从头开始?
链式队列(Linked Queue) 1. 链式队列的概念 1.1 链式队列的定义 链式队列是基于单链表的存储表示实现的队列。 1.2 链式队列中各元素的逻辑及存储关系 链式队列可以采用单链表作为其存储表示,因此,可以在链式队列的声明中用单链表定义它的存储空间。 链式队列的队头指针指向单链表的第一个结点,队尾指针指向单链表的最后一个结点。 注:链式队列的队头元素存放在单链表的第一个结点内,若要从队