数据结构之队列

    队列是一种特殊的线性表,其删除和插入过程都是在线性表的两端进行的。向队列中插入元素的过程叫做入队,只允许在队尾入队。删除元素的过程称为出队,只允许在队头删除。其特点为先进先出(First In First Out).

    队列按其存储方式来分,又可以分为顺序队列和链表队列。

    顺序队列使用的顺序表,下面贴代码。

class SequenceQueue{
	//顺序队列存在,顺序队列出队效率低(需要移动元素),并且存在加溢出(当rear>=length()时,会出现假溢出),所以就出现了顺序循环队列
	//开始时,font=rear=0,对列为空,当(rear+1)%length=font时,队列满
	private Object[] array;
	private int font,rear;
	public SequenceQueue(){};
	public SequenceQueue(int length){
		array=new Object[length];
		font=rear=0;
	}
	//入队
	public boolean add(Object o){
		if(o==null)
			return false;
		if(font==(rear+1)%array.length){
			Object[] copy=array;
			array=new Object[array.length*2];
			int j=0;//新数组的下标
			for(int i=font;i!=rear;i=(i+1)%copy.length){
				array[j++]=copy[i];
			}
			array[rear]=o;
			this.rear=(rear+1)%array.length;
			
		}
		return true;
	}
	//出队
	public Object poll(){
		if(font==rear)
			return null;
		Object o=array[font];
		font=(font+1)%array.length;
		return o;
		
	}
}

    链式队列使用的是单链表,入队效率低。

class LinkedQueue<T>{
	//对于单链表来说,入队效率低(从队尾入,需要先从头结点,遍历到最后一个节点,才能进行队尾插入),当然可以通过循环双链表来实现,但这会占用较多的空间,
	//另一个解决方案就是,增加尾指针,使font指向头节点,rear指向尾节点
	class Node<T>{
		Node<T> next;
		T data;
		public Node(){}
		public Node(T data,Node<T> next){
			this.data=data;
			this.next=next;
		}
	}
	private Node<T> font=null;//指向头节点
	private Node<T> rear=null;//指向尾节点
	//向链表队尾增加节点
	public boolean add(T data){
		if(data==null)
			return false;
		Node<T> node=new Node<T>(data,null);
		if(this.font==null)
			this.font=node;
		else
		{
			this.rear.next=node;	
		}
		this.rear=node;
		return true;
	}
	//从链表队头出队
	public T poll(){
		if(this.font==null)
			return null;
		T x=this.font.data;
		this.font=this.font.next;
		if(this.font==null)
			this.rear=null;
		return x;
	}
	
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JavaScript 编写的记忆游戏(附源代码)   项目:JavaScript 记忆游戏(附源代码) 记忆检查游戏是一个使用 HTML5、CSS 和 JavaScript 开发的简单项目。这个游戏是关于测试你的短期 记忆技能。玩这个游戏 时,一系列图像会出现在一个盒子形状的区域中 。玩家必须找到两个相同的图像并单击它们以使它们消失。 如何运行游戏? 记忆游戏项目仅包含 HTML、CSS 和 JavaScript。谈到此游戏的功能,用户必须单击两个相同的图像才能使它们消失。 点击卡片或按下键盘键,通过 2 乘 2 旋转来重建鸟儿对,并发现隐藏在下面的图像! 如果翻开的牌面相同(一对),您就赢了,并且该对牌将从游戏中消失! 否则,卡片会自动翻面朝下,您需要重新尝试! 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,通过单击 memorygame-index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值