java实现链队列

java实现链队列的类代码:

package linkqueue;

public class LinkQueue {

	class Element
	{
		Object elem;
		Element next;
	}

	private Element front;
	private Element rear;
	private Element header = null;

	/**
	 * 初始化队列
	 * */
	void initQueue()
	{
		header = new Element();
		front = new Element();
		rear = new Element();
		front=header;
		rear=header;
	}

	/**
	 * 向队列插入元素
	 * */
	void enQueue(Object o)
	{
		Element e=new Element();
		e.elem=o;
		if(rear==header)//第一次插入元素
		{
			rear=e;
			header.next=e;
			front.next=e;
		}else
		{
			rear.next=e;
			rear=e;
		}
	}

	/**
	 * 出队
	 * */
	Object deQueue()
	{
		Object o = null;
		if(rear==header)
		{
			System.out.println("队列为空!");
		}else
		{
			o=front.next.elem;
			if(front.next==rear)//队中只有一个元素
			{
				front.next=header;
				rear=header;
			}else//队中大于一个元素
			{
				front.next=front.next.next;
			}
		}
		return o;
	}

	/**
	 * 打印队列
	 * */
	void print()
	{
		System.out.print("打印队列:");
		Element temp = front;
		while(temp!=rear)
		{
			System.out.print(temp.next.elem+"\t");
			temp=temp.next;
		}
		System.out.println();
	}
}

测试类代码:

package linkqueue;

public class LinkQueueMain {

	public static void main(String[] args) {
		LinkQueue lQueue = new LinkQueue();
		lQueue.initQueue();
		System.out.println("出队操作:"+lQueue.deQueue());
		lQueue.enQueue(1);
		lQueue.enQueue(2);
		lQueue.enQueue(3);
		lQueue.enQueue(4);
		lQueue.enQueue(5);
		lQueue.print();

		System.out.println("出队操作:"+lQueue.deQueue());
		System.out.println("出队操作:"+lQueue.deQueue());
		lQueue.print();

		System.out.println("出队操作:"+lQueue.deQueue());
		System.out.println("出队操作:"+lQueue.deQueue());
		lQueue.print();

		System.out.println("出队操作:"+lQueue.deQueue());
		System.out.println("出队操作:"+lQueue.deQueue());
		lQueue.print();

	}

}

  

时间: 2024-12-27 18:33:36

java实现链队列的相关文章

Java实现链式存储的二叉树

二叉树的定义: 二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的.分别称作这个根的左子树和右子树的二叉树组成. 二叉树的遍历方式主要有:先序遍历(NLR),中序遍历(LNR),后序遍历(LRN),和层次遍历. 注意: 由二叉树的先序序列和中序序列可以唯一地确定一颗二叉树: 由二叉树的后序序列和中序序列可以唯一地确定一颗二叉树: 由二叉树的层序序列和中序序列可以唯一地确定一棵二叉树: 但,由二叉树的先序序列和后序序列无法唯一地确定

链队列代码及应用

链队列代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <time.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define TRUE 1 #define FALSE 0 typedef int Status; typedef int ElemType; typedef struct Qnode{ int

链栈和链队列的类实现

#include<iostream>#include<cassert> using namespace std; template <class T>//链栈 struct LinkNode{T data;LinkNode<T> *Link;LinkNode(LinkNode<T> *pr=NULL){Link=pr;}LinkNode(const T& item,LinkNode<T> *pr=NULL){data=item

java实现链栈

前面学习了java实现顺序栈:http://www.cnblogs.com/lixiaolun/p/4644134.html 接下来,学习java实现链栈. 链栈类代码: package linkedstack; public class LinkStack { private Element base; private Element top; class Element { public Object data; public Element next; } /** * 初始化栈 * */

09.循环队列与链队列

一.队列与循环队列 1.队列 (1)队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表.队列是一种先进先出(Fiirst In First Out)的线性表,简称FIFO.允许插入的一端称为队尾,允许删除的一端称为队头. 从队列的定义可知,队列的入队操作,其实就是在队尾追加一个元素,不需要移动任何元素,因此时间复杂度为O(1).队列的删除操作,与栈不同的是,队列元素的出列是在队头,即小标为0的位置,若要删除一个元素的话,需要移动队列的所有元素,因此事件复杂度为O(n).

链队列-C语言版

源文件部分: 指针没学好的同学很难看懂^_^,有点乱,希望对大家有点帮助. #include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<string.h> typedef int Elemtype; #include"LQueue.h" int main() { Deque head; instruction(head); return 0; } 头文件部分: type

线性表的Java实现--链式存储(单向链表)

线性表的Java实现--链式存储(单向链表) 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始. 链式存储结构的线性表将采用一组任意的存储单元存放线性表中的数据元素.由于不需要按顺序存储,链表在插入.删除数据元素时比顺序存储要快,但是在查找一个节点时则要比顺序存储要慢. 使用链式存储可以克服顺序线性表需要预先知道数据大小的缺点,链表结构可以充分利用内存空间,实现灵活的内存动态管理.但是链式存储失去了数组随机存取的特点,同时增加了节点的指针域,空

栈的Java实现--链栈

栈的Java实现--链栈 链栈,顾名思义,就是以链表的形式实现的栈的相关操作,其实是功能弱化了的链表,如果已经阅读过链表的实现代码,那么链栈的实现显得更为容易. 链栈的基本结构: 链栈的入栈操作: 让top引用指向新的节点,新节点的next指向原来的top 记录栈内元素个数的size+1 链栈的出栈操作: top引用指向原栈顶元素的下一个元素(top.next),并释放原栈顶元素的引用 记录栈内元素个数的size-1 链栈的Java实现代码: package com.liuhao.DataStr

数据结构(C实现)------- 链队列

链队列,即队列的链式存储结构,它是仅在表头删除和表尾插入的单链表,因此一个链队列需要设置两个分别指示队头元素和队尾元素的指针,为了操作方便,给链队列添加一个头结点,并令队头指针指向头结点,由此,空的链队列的判断条件就是队头指针和队尾指针均指向头结点. 链队列的类型描述: //链队列类型描述 typedef int QElemType; typedef struct node{ QElemType data; struct node *next; }QNode,*QueuePtr; typedef