隊列,就是一組有頭有尾的數(shù)悴侵。瞧剖。。他們有個優(yōu)良傳統(tǒng)就是先進先出可免。大概就是下圖這個樣子:
隊列
話說有這樣一道題(來源書中的例題啦):
有一組數(shù):8 0 3 3 9 8 2 6 4抓于,這些數(shù)字是由我的QQ號打亂順序而成的,解密規(guī)則是:刪除第一個數(shù)浇借,第二個數(shù)放到剩下這串數(shù)字的末尾捉撮。刪除第三個數(shù),第四個數(shù)再放到剩下這串數(shù)字的末尾...以此類推妇垢,直到所有的數(shù)字都被刪除巾遭,刪除的這些數(shù)字按照先后順序組起來就是我的QQ號啦~
思路:head代表隊首,tail代表隊尾指向隊尾最后一個數(shù)闯估,每刪除一個數(shù)head++灼舍,需要挪到隊尾的數(shù)時tail - -。
var q = Array(100);
var head = 1, tail = 1;
for(var i=1;i<10;i++){
q[i] = prompt('給數(shù)組添加值');
tail++;
}
while(head < tail){
console.log(q[head]);
head++;
q[tail] = q[head];
tail++;
head++;
}
升級:原書是用C語言寫的算法涨薪,也用到了結(jié)構(gòu)體描述了了一個數(shù)組一個隊首一個隊尾的類型骑素。我也不知道模仿的對不對,JavaScript中沒有結(jié)構(gòu)體刚夺,但是有對象啊献丑,我就用對象當?shù)慕Y(jié)構(gòu)體寫的末捣。。创橄。
var q = {
'queue': Array(100),
'head': 1,
'tail':1
};
for(var i=1;i<10;i++){
q.queue[i] = prompt('給數(shù)組添加值');
q.tail++;
}
while(q.head < q.tail){
console.log(q.queue[q.head]);
q.head++;
q.queue[q.tail] = q.queue[q.head];
q.tail++;
q.head++;
}
大概就是這樣子箩做。。妥畏。邦邦。BTW,上邊求出來的QQ真是我的QQ咖熟。圃酵。。