linked list
を使用するFIFOプログラムです。プログラムは目的の出力を出さないが、しばらくして停止した長いループを生成し、プログラムが動作を停止したことを示すメッセージが表示されます。何が問題ですか ?プログラムは目的の出力を与えません。 FIFOの実装が間違っていますか?
#include <iostream>
using namespace std;
struct node {
int data;
struct node* previous; // This pointer keeps track of the address of the previous node
};
struct queue {
node* first;
node* last;
};
node* dataNode_P_A;
bool loop = true;
struct node* enterData();
struct node* enter_N_Data();
void displayQueue();
int main() {
struct node* dataNode= enterData();
while(loop) {
cout << "Want to enqueue ? Press y/n : ";
char ans;
cin >> ans;
if(ans == 'y') {
struct node* dataNode_N = enter_N_Data();
} else {
break;
}
}
displayQueue();
}
struct node* enterData() {
cout << "Enter the number : ";
dataNode_P_A = new node; // Now dataNode points to a chunk allocated to node
cin >> dataNode_P_A->data;
dataNode_P_A->previous = NULL; // this is set to NULL because no one follows till now
queue* q = new queue;
q->first = dataNode_P_A; // this pointer points to the first element
return dataNode_P_A;
}
struct node* enter_N_Data() {
cout << endl << "Enter the number : ";
node* dataNode = new node;
cin >> dataNode->data;
dataNode->previous = dataNode_P_A;
queue* q = new queue;
q->last = dataNode; // this pointer points to the last element
return dataNode;
}
void displayQueue() {
while(dataNode_P_A != NULL) {
cout << dataNode_P_A->data << endl;
dataNode_P_A++;
}
}
前のノードへのポインタのみを持つリンクされたリストを見たことがありません。 N –
Hmmm、strange。通常、単一リンクリスト内の次のノードを追跡しますが、前のノードは追跡しません。 – trojanfoe
目的の出力は何ですか? *実際の出力とは何ですか?それが正確にどこで機能しなくなるのですか?あなたのデバッガを起動する時間。 – razlebe