30/09/2018, 20:37
Hàng đợi ưu tiên
Mn giúp em bài này với. Nó cứ báo hàng đợi rỗng. e k biết sai ở đâu
#include<iostream>
using namespace std;
struct node {
int data;
int prior;
struct node *next;
}*front;
void init(){
front =NULL;
}
void push(int x,int prior){
node *p,*s;
p->data=x;
p->prior=prior;
if(front ==NULL || prior > front->prior){
p->next=front;
front =p;
}
else {
s=front;
while(s->next!=NULL && s->next->prior<=prior){
s=s->next;
}
p->next=s->next;
s->next=p;
}
}
/*void pop(){
node *s=front;
if(front==NULL) cout<<" hang doi rong."<<endl;
else {
}
}
*/
void hienthi(){
node *s=front;
if(front ==NULL) cout<<" hang doi rong.";
else {
cout<<"
Gia tri: "<<" "<<" Do uu tien"<<endl;
while(s!=NULL){
cout<<s->data<<" "<<s->prior;
s=s->next;
}
}
}
void nhap(int x,int prior){
while(1){
if(x!=0){
cout<<"nhap gia tri: "; cin>>x;
cout<<"nhap do uu tien: "; cin>>prior;
push(x,prior);
}
else break;
}
}
int main(){
int x,prior;
init();
nhap(x,prior);
hienthi();
}
Bài liên quan
Hàm nhap( ) sẽ đòi nhập x và prior đến khi x khác 0 thì thôi.
Nhưng trong hàm main( ) cậu mới chỉ khai báo 2 biến nguyên x, prior chứ chưa khởi tạo giá trị đầu cho nó:
Nên nếu x = 0 ngay từ đầu thì vòng while trong hàm nhap( ) không chạy, không có dữ liệu vào --> Hàng đợi rỗng.
Mình thử khởi tạo x = 1 ngay từ đầu thì chạy được.
nếu không khởi đầu cho biến thì DevC sẽ gán cho giá trị biến = 0, với con trỏ = NULL, tuy nhiên không nên áp dụng điều này.
để tránh, bạn nên:
while(1)
{
cin>>x;
… //như bạn code
}