队列的初解
2013.7.11
在昨天上课之前,对于队列,是一个陌生而又神奇的东西,后来跟着胡哥的思路看他自己创建了一个队列才知道,工具已经
在自己手中了,东西的成型与否在于自己怎么去用,或者,利用已有的工具创建一个更高级一点的工具,然后再创建工具直
到创建一个美丽的事物,这也许就是一个软件工程师做的简单但又极其考验毅力的东西。
然后今天,自己做了一个队列的类,虽然不太完美,也很简单,但毕竟是自己造出的东西,每天就这样写一篇日记就当鼓励
自己了。
首先,建立一个队列类是为了使用它,所以最初步的建立了两个类MyQueue,TestQueue。
先考虑我的队列想要实现的功能:
1.能添加数据,长度可变
2.能找到指定位置数据
3.能统计数据个数
4.删除
5.指定位置插入
然后开始考虑各个方法实现的算法了,代码就复制一下
//创建队列类
public class MyQueue{
private int count;//设置计数器属性
private int mqs[]=new int[0];//队列实现的基本方式为将队列类比为数组
//在队列中加入数据,主要思路是每加入一个数据,都新建一个长度比当前大1的数组并舍弃旧的数组,使新数组成为队列
public void add(int a){
int mqsN[]=new int [mqs.length+1];
for(int i=0;i<mqs.length;i++){
mqsN[i]=mqs[i];
}
mqsN[mqs.length]=a;
this.mqs=mqsN;
}
//在队列指定位置加入数据
public void add(int a,int index){
int mqsN[]=new int [mqs.length+1];
for(int i=0;i<index;i++){
mqsN[i]=mqs[i];
}
mqsN[index]=a;
for(int i=index+1;i<mqsN.length;i++){
mqsN[i]=mqs[i-1];
}
this.mqs=mqsN;
}
//打印队列中的数据内容,方法同数组
public void print(){
for(int i=0;i<mqs.length;i++){
System.out.print(mqs[i]+" ");
}
}
//查找指定位置的数据,方法同数组
public int search(int index){
if(index<mqs.length){
return mqs[index];
}else
{
System.out.print("超出队列长度,查找失败");
return 0;
}
}
//计数方法,返回队列的数据个数,方法同数组
public int count(){
return mqs.length;
}
//删除操作,方法同数组
public void delet(int index){
int mqsN[]=new int [mqs.length-1];
for(int i=0;i<index;i++){
mqsN[i]=mqs[i];
}
for(int i=index;i<mqsN.length;i++){
mqsN[i]=mqs[i+1];
}
this.mqs=mqsN;
}
}
测试用的类就不写了。
其实技术性的东西确实少的可怜,思路主宰一切。
然后就是真正的心得了:
1.编出一个东西没有想象中的那么难了,虽然也许是这个练习简单的缘故,但至少不会见到练习就胆怯了,从简单的开始
找回自信吧。
2.回头来看,下午在尝试用队列存储五子棋中的棋子时,发现又得重新建一个队列,重新复制粘贴,改变队列中存储数据
的类型。晚上上课时胡哥介绍了一个“泛型”更简单的解决这个问题,学海无涯啊!public class MyQueue<E>{
......}
3.上课的心得吧,学姐学长老师的重要词汇:技术博客、课外学习...还有不记得了,但是慢慢积累总没错。
4.还有的疑问不要忘记:如何利用队列和重绘保存五子棋棋子、五子棋棋盘随界面的大小变化大小。
今天就先到这里
分享到:
相关推荐
C语言_初始化队列+入队列+出队列+销毁队列
链队列题目:初始化队列+入队列+出队列+销毁队列
此文档是C#开发的消息队列系统,适用于消息队列入门与新手。 在Windows 7 上安装消息队列的步骤 打开“控制面板”。 单击“程序”,然后在“程序和功能”下, 单击“打开或关闭 Windows 功能”。 -或者-单击“经典...
java队列实现(顺序队列、链式队列、循环队列)
队列建立和队列的逆置 队列建立和队列的逆置 队列建立和队列的逆置
普通队列 1)将尾指针往后移:rear+1,当front==rear【空】 2)若尾指针rear小于队列的最大下标maxSize-1,则将数据存入rear所指的数中组元素中,否则无法存入数据。rear==maxSize-1[队列满] 环形队列 1)front变量的...
编写一个程序,实现链队列的各种基本运算,并在基础上完成以下功能: 1) 初始化链队列; 2) 判断链队列是否为空; 3) 依次进队元素a,b,c; 4) 出队一个元素,并输出该元素; 5) 输出链队列的长度; 6) 依次进队元素d,...
分支限界法中的优先队列式分支限界法解装载问题
使用顺序存储实现优先级队列,展示优先级队列和普通队列的区别之处。
用C#实现任务队列,一个队列存放任务,线程互斥的从任务队列中取,放任务,任务队列为空,线程等待,直到有任务加入队列为止。
1、掌握队列的类型定义方法。 2、理解和掌握循环队列解决假溢出的方法。 二、实验内容 1、利用循环队列模拟舞伴配对问题:在舞会上,男、女各自排成一队。舞会开始时。依次从男队和女队的队头各出一人配成舞伴。如果...
java中,常用的阻塞式队列Demo。包含:ArrayBlockingQueue、LinkedQueue、PriorityBlockingQueue
顺序队列和链式队列的实现
实验三 栈和队列 3.1实验目的: (1) 熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等,掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现; (2) 熟悉队列的特点(先进先出)及队列的基本操作...
入队(EnQueue) 、出队(TryDequeue) 、是否为空(IsEmpty)、获取队列内元素数量(Count)。 一、ConcurrentQueue内部结构: 1.实现原理 众所周知,在普通的非线程安全队列有两种实现方式: 1.使用数组实现的循环队列。 2....
本实例实现了泛型顺序队列和泛型循环队列的基本操作,并通过界面演示了队列中元素的变化,最后结合栈实现了回文字符串的判断,通过本实例可以充分掌握C#队列数据结构。
1. c++实现的无锁环形队列,注释详细,讲解了环形队列的实现原理和操作技巧 2. 在linux服务器下,可以自己编译,运行,也可以修改参数后做测试 3. 编译的命令如下:g++ -std=c++11 -o test main.cpp ring_buffer.cpp...
配套代码讲解:https://blog.csdn.net/songchuwang1868/article/details/90200251 ...同步队列-无锁队列-循环数组无锁队列 同步队列-无锁队列-循环数组无锁队列 同步队列-无锁队列-循环数组无锁队列
一般解空间的队列式分支限界法 Description 试设计一个用队列式分支限界法搜索一般解空间的函数。该函数的参数包括结点可行性 判定函数和上界函数等必要的函数,并将此函数用于解布线问题。 印刷电路板将布线区域...
这个文档详细的介绍了利用栈和队列解决迷宫问题的步骤,对与初学者学习数据结构能很好的进行辅导