リンクリストを使用してキューデータ構造を実装する方法を学んでいます。これが私のコードです。この表示機能が最初に挿入された要素のみを印刷する理由。そしてもう1つの疑問は、オタク向けのオタクでいくつかのコードを見たということです。そこにも別のキュー構造があります。最後に追加し、前に削除することで、単一のリンクリストのような実装で十分だと思います。これに何か問題はありますか?これが私のコードです。
#include<iostream>
#include<stdlib.h>
#define memory (struct queue*)malloc(sizeof(struct queue))
using namespace std;
struct queue{
int data;
struct queue *next;
};
struct queue *front=NULL, *rear=NULL;
class constructQ{
public:
void enQ(int num){
struct queue *newnode= memory;
newnode->data= num;
newnode->next= NULL;
if(!rear){
rear=newnode;
if(!front) front= newnode;
}
else{
rear->next= newnode;
rear= newnode;
}
}
void display(){
struct queue *tmp= front;
while(tmp){
cout << front->data << " ";
tmp= tmp->next;
}
}
};
int main(){
int num, choice;
constructQ q;
while(1){
cout << "1.enqueue 2.Dequeue 3.display 4.exit" << endl;
cin >> choice;
switch(choice){
case 1:
cin>> num;
q.enQ(num);
break;
case 3:
q.display();
break;
case 4:
exit(0);
default:
cout << "invalid input" << endl;
break;
}
}
return 0;
}
最初の(フロント)ノードのみが出力されているのは、コードが次のとおりであるためです。
cout << front->data << " "; // prints the front value every iteration
代わりにwhileループで:
cout << tmp->data << " " // prints the data in tmp which is the next in every iteration;
注:nullptr
NULLの代わりにNULLポインターに使用することをお勧めします(エラーが発生しにくい)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加