队列是一种先进先出的数据结构,我们可以将其假设为一个排队机制,广泛应用于计算机的各个领域,包括操作系统的作业调度,用于缓冲区,网络中的路由缓冲包区。
队列的结构由两个标志组成,不同于栈的一个标志,空时tos=-1。由font与rear组成。
一般的队列我们可以通过调用linkedlist来实现queue的功能,此队列通过链表实现。
这里着重说一下循环队列,数组实现(由于链表过于繁琐)。
定义四个方法:
是否为空:font==rear
是否满:(rear+1)% length==font 。说明:font指向对手元素,rear指向队尾元素的下一个,若队列为满,正常应该font==rear,就会与空时重复。为了避免这一问题,我们定义留一个字符表示队列满。
入队:array【rear】=value。注意:rear要++,同时注意rear要小于10,若大于,则从0开始计数 ,这样才能保证循环。
出队:同于入队,只不过是font的操作。




队列定义部分结束,借这个空闲说说内部类:
内部类的好处:

1 成员内部类与静态内部类的区别:
一个在编译时会生成指向外部类的一个引用,这样在调用时需要先生成外部了的对象,之后new内部类。而另一个再生成对象时直接调用即可。
静态内部类不可以使用外部类非静态的变量与方法,但在自己的类中可以定义非静态的属性与方法。
很奇怪吧。
2 匿名内部类:两种定义方式:button.addlistner(new actionListner(){实现接口的抽象方法});
定义线程时:Thread t=new Thread(new Runnable(){run(){}});
两种方式异曲同工,都是定义的接口引用的具体实现,格式是new+接口,可能有些困惑。
接着说队列,下面说一下队列的应用:舞伴问题、杨辉三角问题、游标编码问题。

杨辉三角:程序输入行数,打印出相应行的二项式系数:
脱了这么久,今天终于可以把它完成了:



游标编码问题就是一个统计字符串数字个数的问题,相对来说比较简单,只需一个字符串即可,在这里不再赘述。
网友评论