構造隊列
題目:
小明同學把1到n這n個數(shù)字按照一定的順序放入了一個隊列Q中∏锍樱現(xiàn)在他對隊列Q執(zhí)行了如下程序:
while(!Q.empty()) //隊列不空椭符,執(zhí)行循環(huán)
{
int x=Q.front(); //取出當前隊頭的值x
Q.pop(); //彈出當前隊頭
Q.push(x); //把x放入隊尾
x = Q.front(); //取出這時候隊頭的值
printf("%d\n",x); //輸出x
Q.pop(); //彈出這時候的隊頭
}
做取出隊頭的值操作的時候薯演,并不彈出當前隊頭跟伏。
小明同學發(fā)現(xiàn)丢胚,這段程序恰好按順序輸出了1,2,3,…,n◆婀希現(xiàn)在小明想讓你構造出原始的隊列,你能做到嗎携龟?
輸入描述:
第一行一個整數(shù)T(T ≤ 100)表示數(shù)據(jù)組數(shù)兔跌,每組數(shù)據(jù)輸入一個數(shù)n(1 ≤ n ≤ 100000),輸入的所有n之和不超過200000峡蟋。
輸出描述:
對于每組數(shù)據(jù)坟桅,輸出一行,表示原始的隊列层亿。數(shù)字之間用一個空格隔開桦卒,不要在行末輸出多余的空格.
解:
先彈出第一個,放入最后匿又,然后彈出第一個方灾,彈出的永遠是第二個。所以從n開始碌更,倒著放進去的每個也該待在第二個裕偿,而它前面的一個變成了最后一個。所以加數(shù)據(jù)時痛单,要先放在第一個嘿棘,然后將最后一個放在第一個。
function arrayArrage(newArray){
var oldArray = [];
var x;
for (var i = newArray.length -1; i >= 0; i--) {
oldArray.unshift(newArray[i]);
x = oldArray.pop();
oldArray.unshift(x);
}
console.log(oldArray);
return oldArray;
}