算法-第四版-練習1.3.42解答

題目

複製棧。爲基於鏈表實現的棧編寫一個新的構造函數,使以下代碼

Stack<Item> t=new Stack<Item>(s);

得到的t指向棧s的一個新的獨立的副本。

思路

因爲棧是後入先出,所以在複製棧的時候,要聲明一箇中轉棧來實現翻轉原來的棧,再把中轉棧裏的元素每個都push到原來的棧和新棧。也可以使用實現迭代器的Stack的foreach方法(foreach只是操作數據)。

代碼

方法一

    public E42(E42 s)
    {
        E42 temp = new E42();
        int maxsize = s.size();
        for (int i = 0; i < maxsize; i++)
            temp.push(s.pop());
        for (int i = 0; i < maxsize; i++)
        {
            Item item = (Item) temp.pop();
            s.push(item);
            this.push(item);
        }
    }

方法二

public Stack(Stack<Item> s)
{
    Stack<Item> temp = new Stack<Item>();
	for(Item i:s)
    {
		temp.push(i);
	}
	for(Item i:temp)
    {
		this.push(i);
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章