實現queue和stack的拷貝建構函式的乙個思路

2021-08-02 02:13:26 字數 908 閱讀 7232

首先宣告一下這並非本人的成果,而是鄭斯達師兄開設的stack題目的標準答案。queue的拷貝方法則是我基於這個修改得到的。

首先從stack(棧)開始

stack(const stack

&stack) else

copy_temp = copy_temp->next;

}top_node = top_temp;

node_num =

stack

.node_num;

}

首先 若兩個棧的位址一樣,則直接返回,不做任何操作;之後先對當前棧初始化,如果需要拷貝的棧也為初始化狀態(棧頂指標為null)則直接返回,這樣得到的棧同樣是初始化的棧。

之後,宣告兩個指標,分別賦值拷貝棧的棧頂指標和null。 此處node為結構體,**如下

struct node 

};

top_temp的作用是讓第一次迴圈的時候只構造棧頂,同時儲存棧頂的指標,方便第二次以及之後的迴圈。

第二次開始執行else內**,即拷貝棧頂的下乙個資料,然後讓top_node變為剛剛拷貝好的資料,以達到迴圈拷貝餘下所有資料直到棧底的目的。

迴圈結束後再將top_node的位址更正為真正的棧頂位址,從而實現棧的拷貝

queue與stack相似,只是初始化需要的指標多了乙個隊尾指標back_node,其他的只要把stack的top_node改為queue的隊首指標front_node即可

queue(const queue & another)  else 

copy = copy->next;

}front_node = temp;

node_num = another.node_num;

}

Queue 和Stack 的區別

protected void page load object sender,eventargs e queue 先進先出。所以結果是123 true string str1 queue.dequeue tostring foreach object obj in queue string str2...

stack和queue的使用

stack的介紹及使用 1.stack是一種容器介面卡,專門用在具有先進後出操作的上下文環境中,其刪除只能從容器的一端進行元素的插入與提取操作 2.stack是作為容器介面卡被實現的,容器介面卡即是對特定類封裝作為其底層的容器,並提供一組特定的成員函式來訪問其元素,將特定類作為其底層的,元素特定容器...

Go 用list實現stack和queue

go的container list 包裡面帶的list,有在鍊錶頭部和尾巴插入元素,和獲取頭部和尾部元素的操作,因此我們可以用list來實現棧和佇列的功能。import container list fmt func stacktest for ele stack.back 取出鍊錶最後乙個元素 v...