優先度キュー挿入 dev c++ IDE を実装しようとしています)、つまり優先度 > 新しいノードの優先度を持つノードの前。ユーザーからの挿入はコマンドプロンプトで発生するようですが、表示機能は最初のノードのみを出力します。他のキュー要素が表示されないのはなぜですか? 最初に挿入されていないのではないかと思います.10,20,30を挿入してから削除すると..空のキューが出力されます..キューには10しかなかったので..なぜですか?提案してください.
注: ここでは、delete 関数と main 関数をコードに含めていませんが、プログラムには含まれています。明らかに、実行時例外は発生しません。コンパイルは正常に動作します。しかし、望ましい出力はありません。
#include<iostream>
using namespace std;
typedef struct node{ //template would enable generic datatype
int info,prn;
node * link;
}node;
node * start = 0;
int item,pri;
void insert(int item, int pri){
node * newnode = new node;
newnode-> info = item;
newnode-> prn = pri;
if(start == 0){//explicit check in insert if start is NULL.
start = newnode;
newnode->link = 0;
}
/*When you first run the program, start = 0 or NULL. You then say prev = start,
so as a result prev = NULL. So when you try to access prev->link, there's an access violation.*/
else{
node * prev= start;
node * temp = prev->link;
while (temp!= 0){
if(temp->prn > newnode->prn){
newnode -> link = prev -> link;
prev -> link = newnode;
break;
}
else{
if( temp->link == 0){
temp -> link = newnode;
newnode->link = 0;
break;
}
}
prev = prev->link;
}
}
}
void display(){
if(start == 0)
cout<<"Empty priority queue\n";
else{
cout<<("The Contents of the List are: ");
node *temp = start;
while(temp!=NULL){ //if we do while temp->link!=NULL, then last node won't print
cout<< temp->info;
cout<<" ---> ";
temp = temp->link;
}
}
}