数据结构之链队列

/*

 *@date:08-07-08

 *@descript:链队列的实现与应用

 **/

public class LinQueue

{

	private Node front;//队头

	private Node rear;//对尾 

	

	public LinQueue()//构造函数,置空队列

	{

		front=rear=null;

	}

	

	public boolean isEmpty()//判断是否为空队列

	{

		return front==null && rear==null;

	}

	

	public void EnQueue(Object obj)//入队

	{

		Node p=new Node(null);

		p.setElement(obj);

		p.setNext(null);

		if(!isEmpty())//判断是否为空 

		{

			front=rear=p;//将数据插入到空队列

		}else

		{

			rear.setNext(p);//将P链到队尾节点后

			rear=p;//队尾指针指向新的队尾

		}

	}

	public Object DeQueue()

	{

		Object ret=null;

		Node p=new Node(null);

		if(!isEmpty())

		{

			p=front;

			ret=p.getElement();

			front=p.getNext();

			if(rear==p)//如果原队中只有一个节点,删除后则变空

			{

				rear=null;

			}

		}else

		{

			System.out.println ("队列为空!");

		}

		return ret;

	}

	public Object getHead()

	{

		Object ret=null;

		if(!isEmpty())

		{

			ret=front.getElement();

		}else

		{

			System.out.println ("队列为空!");

		}

		return ret;

	}

	

	public static void main(String[] args)

    {

    	SeqQueue myQueue=new SeqQueue();//初始化队列的空间大小为 5

    	int[] data={1,3,5,7,9,11};

    	try{

    		

    		System.out.print ("入队元素序列为:");

    		//将数据入队

			for (int i = 0; i<data.length; i++)

		    {

		    	myQueue.EnQueue(new Integer(data[i]));

		    	System.out.print (data[i]+" ");

		    }

		    System.out.println ("");

		    System.out.println("当前队头元素为:"+myQueue.getHead());

			System.out.print ("出队元素序列为:");

			//将数据出队

			while(!myQueue.isEmpty())

			{

				System.out.print(myQueue.DeQueue()+" ");

			}    

    		System.out.println ();

	    }

	    catch (Exception ex) {

	     	ex.printStackTrace();

	    }

    	

    }

}

class Node

{

	Object element;//数据元素

	Node next;//下一个节点的对象引用

	

	public Node(Node nextval)//用于头节点的构造函数

	{

		next=nextval;

	}

	public Node(Object obj,Node nextval)

	{

		element=obj;

		next=nextval;

	}

	public Node getNext()//获取下个节点

	{

		return next;

	}

	public void setNext(Node nextval)//置next

	{

		next=nextval;

	}

	public Object getElement()//取element

	{

		return element;

	}

	public void setElement(Object obj)//设置元素

	{

		element=obj;

	}

	public String toString()//装换element为String 类型

	{

		return element.toString();

	}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值