记录患者的预约信息。所以这是我的问题,起初它是
工作但是每当我输入
输入第3名患者(第3个节点)的信息时它将出错的名称。这是一个队列。 `
#include <iostream>
using namespace std;
struct clnc_hrs
{
std:: string name;
std:: string symptms;
int age;
int cont_num;
clnc_hrs *next;
};
class List{
private:
clnc_hrs *rear;
clnc_hrs *front;
public:
List();
void BookAppointment();
void DeletePrevious();
void DisplaySchedule();
};
List::List(){
rear = NULL;
front = NULL;
}
void List::BookAppointment ()
{
std:: string N;
std:: string S;
int A;
int CN;
clnc_hrs *newnode = (clnc_hrs*)malloc(sizeof(clnc_hrs));
fflush(stdin);
cout<<"enter name of the patient:";
std::getline(cin, N);
newnode->name = N;
fflush(stdin);
cout<<"enter age of the patient:";
cin>>A;
newnode->age = A;
fflush(stdin);
cout<<"enter contact number of the patient:";
cin>>CN;
newnode->cont_num = CN;
fflush(stdin);
cout<<"enter the complaints or symptoms of the patient:";
std::getline(cin, S);
newnode->symptms = S;
newnode->next = NULL;
if(front == NULL)
{
fflush(stdin);
front = newnode;
fflush(stdin);
}
else
{
fflush(stdin);
rear->next = newnode;
fflush(stdin);
}
rear = newnode;
}
void List::DisplaySchedule ()
{
clnc_hrs *disp = (clnc_hrs*)malloc(sizeof(clnc_hrs));
disp = front;
if(front == NULL)
{
cout<<"there's no appointment for today"<<endl;
}
else
{
while(disp != NULL)
{
cout<<endl;
cout<<"name:"<<disp->name<<endl;
cout<<"age:"<<disp->age<<endl;
cout<<"contact number:"<<disp->cont_num<<endl;
cout<<"symptoms/complaints:"<<disp->symptms<<endl;
cout<<endl;
disp = disp->next;
}
}
}
void List::DeletePrevious()
{
clnc_hrs *newnode = (clnc_hrs*)malloc(sizeof(clnc_hrs));
if(front == NULL)
{
cout<<"no appointments today"<<endl;
}
else
{
newnode = front;
front = front->next;
cout<<"The previous patient is: "<<endl;
cout<<newnode->name<<endl;
cout<<newnode->age<<endl;
cout<<newnode->cont_num<<endl;
cout<<newnode->symptms<<endl;
delete newnode;
}
}
int main ()
{
List list;
int ans;
while(true)
{
cout<<"press 1 for booking an appointment\npress 2 to delete previous patients info \npress 3 for display"<<endl;
cin>>ans;
if(ans == 1)
{
list.BookAppointment();
}
else if(ans == 2)
{
list.DeletePrevious();
}
else if(ans == 3)
{
list.DisplaySchedule();
}
}
system("pause");
}
`
我希望有人可以帮助我。我正在使用dev c ++ 4.9.9.2
答案 0 :(得分:3)
正如你在非家庭作业中所说的那样,只需使用STL - 即http://www.cplusplus.com/reference/queue/queue/
所有位&#39; bob都是为您完成的
答案 1 :(得分:2)
不要在C ++程序中使用malloc
,它不能正确构造C ++对象,而是使用new
。
clnc_hrs *newnode = new clnc_hrs();
您可能有其他错误,但这是第一个错误。
cout<<"enter name of the patient:";
std::getline(cin, N);
newnode->name = N;
没有错,但有点浪费。这更简单
cout<<"enter name of the patient:";
std::getline(cin, newnode->name);
对于所有其他输入也是如此。
fflush(stdin);
是实现定义的行为。 fflush
仅在输出流而非输入流上定义了行为。你似乎正在使用fllush(stdin);
作为某种神奇的咒语,你希望它能解决你的问题。避免这种想法。了解您编写的代码到底发生了什么。在这种情况下,您应该删除对fflush(stdin);
的所有电话。