用链表实现队列
1 建立链表节点类
public LinkNode{
public Object obj;
public LinkNode child;
public LinkNode parent;
}
添加get,set方法即可
2 建立链表类
实现添加节点,删除节点,更新节点,输出链表长度,输出链表等方法
实例化链表类,将以上方法添加到链表
使用双向链表,设置头节点front和尾节点last
添加方法:
/**
* 插入新节点
* @param obj:要插入的新节点
*/
public void add(Object obj) {
//实例化节点,将要插入的节点内容放入节点
LinkNode node=new LinkNode(obj);
if(front==null){
front=node;
last=front;
}else{
last.setChild(node);
node.setParent(last);
last=node;
}
}
/**
* 删除指定位置的节点
* @param index:指定节点
*/
public void deleteLink(int index) {
if(index>this.getLength()||index<0){
throw new java.lang.RuntimeException("下标越界"+index+"size:"+this.getLength());
}else{
LinkNode node=this.getLinkNode(index);
LinkNode fNode=(LinkNode) node.getParent();
LinkNode cNode=(LinkNode) node.getChild();
if(fNode==null){
fNode=cNode;
}else if(cNode==null){
fNode.setChild(cNode);
}else{
fNode.setChild(cNode);
cNode.setParent(fNode);
}
}
}
/**
* 修改对象节点
* @param index:修改位置
* @param obj:修改后的数据
*/
public void updateLink(int index, Object obj) {
if(this.getLength()<index||index<0){
throw new java.lang.RuntimeException("下标越界"+index+"size:"+this.getLength());
}else{
LinkNode node=this.getLinkNode(index);
node.setObj(obj);
}
}
/**
* 取得链表的长度
* @return:链表的长度
*/
public int getLength() {
int count=0;
if(front==null){
return count;
}
LinkNode node=(LinkNode) front.getChild();
if(node!=null){
count++;
node=(LinkNode) front.getChild();
}
return count+1;
}
/**
* 输出链表
* @param root:头结点
*/
public void printLink(LinkNode root){
if(root!=null){
Object data=root.obj;
System.out.println("数据:"+data);
root=(LinkNode) root.getChild();
printLink(root);
}
}
分享到:
相关推荐
5. **优缺点**:链表实现队列时,入队和出队操作通常较快,因为无需移动其他元素。但相比于数组,链表的随机访问性能较差,因为需要遍历找到特定位置的节点。 **对比与选择** 数组和链表实现队列各有优势,具体...
用循环链表实现队列操作 讲解详细 通过多次编译 可以运行的
在C++中,可以用数组或链表实现队列。这里使用链表作为基础,可以方便地进行插入(入队)和删除(出队)操作,而无需考虑数组的大小限制。队列的主要操作包括:enqueue(入队)、dequeue(出队)和检查队首元素。 ...
总的来说,理解链表和如何使用链表实现队列对于深入学习数据结构和算法至关重要。通过实践和实现这些基本概念,可以更好地理解和运用它们,从而提高代码的效率和可维护性。在Python中,虽然有许多内置的工具可以方便...
在链表实现队列时,我们需要两个主要操作:入队(enqueue)和出队(dequeue)。入队是在队尾添加元素,而出队则是从队头移除元素。 1. **入队操作**: - 创建一个新节点,包含待插入的数据。 - 如果队列为空,新...
要使用链表实现队列,我们需要两个关键操作:入队(enqueue)和出队(dequeue)。 1. 入队操作:当一个新元素加入队列时,它被添加到队尾。在链表中,这可以通过创建一个新的节点,将新元素的值存储在节点中,然后...
链表队列的实现 链表队列的具体增删改查实现 是一种单链表实现
这是一个双链表去实现队列的列子,里面用到了指针的东西, 还有NODE的东西
在循环链表表示队列中,还可以实现队列的创建操作,创建一个链队列,并将数组中的元素赋给链队列。创建操作可以通过以下步骤来实现: 1. 创建一个空链表结点,作为队列的头结点。 2. 将数组中的元素逐个插入到队列...
* 基于双向链表实现双端队列结构 */ package dsa; public class Deque_DLNode implements Deque { protected DLNode header;//指向头节点(哨兵) protected DLNode trailer;//指向尾节点(哨兵) protected ...
链表实现队列更加灵活,因为它的大小可以根据需要动态扩展。链表由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表不需要连续的内存空间,因此插入和删除操作通常比数组更快。 1. 初始化:创建两个...
Java链表应用--基于链表实现队列详解(尾指针操作) Java链表应用--基于链表实现队列详解(尾指针操作)是指使用Java语言实现基于链表的队列,并且详细介绍了队列的实现细节,包括链表的改进、链表操作等。 在Java...
定义了一个队列的类,包括建立队、入队、出队、打印队列、访问队首队尾的成员函数。
在C语言中,可以通过数组或链表实现队列。当队列满时,可以使用循环队列避免溢出问题。 最后,栈是一种后进先出(LIFO,Last In First Out)的数据结构,类似于堆叠物品。栈的操作主要有两个:压栈(将元素放入栈顶...
本篇文章将介绍一种利用链表实现队列的方法,该方法的特点在于只维护一个指向链表尾部(即队列尾部)的指针。这种方法在某些场景下可以有效地减少内存的使用量,并简化代码。 首先,定义了链表的基本单元——结点...
4.go语言中通过链表实现队列:使用type LinkedList struct{ e interface{} next *LinkedList /*下一个节点*/ previous *LinkedList /*上一个节点*/ size int last *LinkedList /*最后一个节点*/}定义一个LinkedList...
根据给定文件的信息,我们可以总结出以下关于C++中链表队列实现的相关知识点: ### 一、链表队列的基本概念 链表队列是一种使用链表结构来实现的队列数据结构。队列是一种先进先出(First In First Out, FIFO)的...
在Python中,可以使用链表实现队列,如下所示: ```python class Queue: def __init__(self): self.head = None self.tail = None def enqueue(self, data): new_node = ListNode(data) if not self.head: ...