-4
我正在開發一個項目,我必須實現一個異類列表的隊列和堆棧。我執行這個列表,但是當我嘗試將信息放入它時,有些事情會出錯。我必須從文件中讀取信息並將這些信息放入列表中;該列表由n個容器組成。文件中的每一行(類似stack 1 2 4 5
)都是異構列表中的容器,其中第一個字符串顯示容器是堆棧還是隊列。我嘗試讀取信息並將其放入列表中,但它只讀取第一行。從文件中讀取並放入一個容器C++
這裏是我的代碼:
void write_in_txt(int n){
ofstream foo("conteiners.txt");
string type;
for(int i=0;i<n;i++){
cin>>type;
foo << type;
int num = 1;
while(num != 0){
cin>>num;
if(num!=0){
foo<<" ";
foo<<num; }
}
foo << endl;
}
}
void read_and_make(int n,QueueStackList& qsl){
ifstream data("conteiners.txt");
string tmp;
LinkedListIterator<Object<int>*> it;
for(int i=0;i<n;i++){
if(i == 0){
int temp;
data >> tmp;
if(tmp.compare("stack")){
qsl.insertEnd(new StackObject<int>);
it = qsl.begin();
while(data >> temp){
(*it)->insert(temp);
}
}
else
{
qsl.insertEnd(new QueueObject<int>);
it = qsl.begin();
while(data >> temp){
(*it)->insert(temp);
}
}
}
else {
int temp;
data >> tmp;
if(tmp.compare("stack")){
qsl.insertEnd(new StackObject<int>);
it++;
while(data >> temp){
(*it)->insert(temp);
}
}
else
{
qsl.insertEnd(new QueueObject<int>);
it++;
while(data >> temp){
(*it)->insert(temp);
}
}
}
}
}
containers.txt:
stack 4 7 4 7 7
stack 9 8 7 4
queue 1 2 5 3
stack 8 7 7 7
和主要功能:
int main(){
QueueStackList qsl;
//write_in_txt(4);
read_and_make(4, qsl);
cout << qsl <<endl; ///prints only 4 7 4 7 7
return 0;
}
這聽起來像你可能需要學習如何使用調試器來遍歷你的代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。進一步閱讀:** [如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver
如果您創建了自己的代碼,則代碼更簡單首先堆疊或排隊,填充數據,然後插入到列表中。 –