隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),我們可以將其假設(shè)為一個(gè)排隊(duì)機(jī)制,廣泛應(yīng)用于計(jì)算機(jī)的各個(gè)領(lǐng)域纯出,包括操作系統(tǒng)的作業(yè)調(diào)度,用于緩沖區(qū),網(wǎng)絡(luò)中的路由緩沖包區(qū)暂筝。
隊(duì)列的結(jié)構(gòu)由兩個(gè)標(biāo)志組成箩言,不同于棧的一個(gè)標(biāo)志,空時(shí)tos=-1焕襟。由font與rear組成陨收。
一般的隊(duì)列我們可以通過(guò)調(diào)用linkedlist來(lái)實(shí)現(xiàn)queue的功能,此隊(duì)列通過(guò)鏈表實(shí)現(xiàn)胧洒。
這里著重說(shuō)一下循環(huán)隊(duì)列畏吓,數(shù)組實(shí)現(xiàn)(由于鏈表過(guò)于繁瑣)。
定義四個(gè)方法:
是否為空:font==rear
是否滿(mǎn):(rear+1)% length==font 卫漫。說(shuō)明:font指向?qū)κ衷胤票瑀ear指向隊(duì)尾元素的下一個(gè),若隊(duì)列為滿(mǎn)列赎,正常應(yīng)該font==rear宏悦,就會(huì)與空時(shí)重復(fù)。為了避免這一問(wèn)題包吝,我們定義留一個(gè)字符表示隊(duì)列滿(mǎn)饼煞。
入隊(duì):array【rear】=value。注意:rear要++诗越,同時(shí)注意rear要小于10砖瞧,若大于,則從0開(kāi)始計(jì)數(shù) 嚷狞,這樣才能保證循環(huán)块促。
出隊(duì):同于入隊(duì),只不過(guò)是font的操作床未。
隊(duì)列定義部分結(jié)束竭翠,借這個(gè)空閑說(shuō)說(shuō)內(nèi)部類(lèi):
內(nèi)部類(lèi)的好處:
1 成員內(nèi)部類(lèi)與靜態(tài)內(nèi)部類(lèi)的區(qū)別:
一個(gè)在編譯時(shí)會(huì)生成指向外部類(lèi)的一個(gè)引用,這樣在調(diào)用時(shí)需要先生成外部了的對(duì)象薇搁,之后new內(nèi)部類(lèi)斋扰。而另一個(gè)再生成對(duì)象時(shí)直接調(diào)用即可。
靜態(tài)內(nèi)部類(lèi)不可以使用外部類(lèi)非靜態(tài)的變量與方法啃洋,但在自己的類(lèi)中可以定義非靜態(tài)的屬性與方法传货。
很奇怪吧。
2 匿名內(nèi)部類(lèi):兩種定義方式:button.addlistner(new actionListner(){實(shí)現(xiàn)接口的抽象方法});
定義線(xiàn)程時(shí):Thread t=new Thread(new Runnable(){run(){}});?
兩種方式異曲同工裂允,都是定義的接口引用的具體實(shí)現(xiàn)损离,格式是new+接口,可能有些困惑绝编。
接著說(shuō)隊(duì)列僻澎,下面說(shuō)一下隊(duì)列的應(yīng)用:舞伴問(wèn)題貌踏、楊輝三角問(wèn)題、游標(biāo)編碼問(wèn)題窟勃。
楊輝三角:程序輸入行數(shù)祖乳,打印出相應(yīng)行的二項(xiàng)式系數(shù):
脫了這么久,今天終于可以把它完成了:
游標(biāo)編碼問(wèn)題就是一個(gè)統(tǒng)計(jì)字符串?dāng)?shù)字個(gè)數(shù)的問(wèn)題秉氧,相對(duì)來(lái)說(shuō)比較簡(jiǎn)單眷昆,只需一個(gè)字符串即可,在這里不再贅述汁咏。