2012-09-23 90 views

回答

2

您可以使用兩個堆棧製作(低效)列表。當您需要插入或檢索項目時,只需將項目從一個堆棧移到另一個堆棧,直到獲得正確的索引。

下面是在JavaScript的例子:

function List() { 
    this.stack1 = []; 
    this.stack2 = []; 

    Object.defineProperty(this, 'length', { 
     get: function() { return this.stack1.length + this.stack2.length; } 
    }); 
} 

List.prototype.item = function(index) { 
    if(index < this.stack1.length) { 
     while(index < this.stack1.length - 1) { 
      this.stack2.push(this.stack1.pop()); 
     } 

     return this.stack1[this.stack1.length - 1]; 
    } 

    while(index > this.stack1.length) { 
     this.stack1.push(this.stack2.pop()); 
    } 

    return this.stack2[this.stack2.length - 1]; 
}; 

List.prototype.insert = function(item, index) { 
    this.item(index - 1); 
    this.stack1.push(item); 
}; 
0

的列表中,你的意思是排隊becaue我看不到棧和列表之間的任何連接...

如果是這樣,你可以使用兩個疊加:s1 san s2,想象它們是從下到上。 s1是列表的頭部,s2是尾部。此列表的 功能:

  1. 刀片(ELE):只使用s2.push_back(ELE)
  2. pop()方法:如果s1不爲空,s1.pop();否則彈出從S2的每個元素和他們推到S1,然後s1.pop()
  3. 大小():s1.size()+ s2.size()
  4. ...
相關問題