这是我的代码在队列中插入字符后,如果我弹出元素,字符(名称和优先级)将显示我输入的最新数据,先前的数据将被删除。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int NAME = 20;
int num = 1001;
typedef struct patient {
int age;
char *name;
char *priority;
struct patient* next;
} Patient;
Patient* newPatient(int age, char *p, char *name)
{
Patient* temp = (Patient*)malloc(sizeof(Patient));
temp->age = age;
temp->priority = p;
temp->next = NULL;
temp->name = name;
//strcpy(temp->name,name);
printf("name is%s",temp->name);
printf("priority is%s",temp->priority);
return temp;
}
void addPatient(Patient** head, int age, char *p, char *name)
{
Patient* start = (*head);
Patient* temp = newPatient(age, p, name);
if (atol((*head)->priority) < age) {
temp->next = *head;
(*head) = temp;
}
else {
while (start->next != NULL &&
atol(start->next->priority) < age) {
start = start->next;
}
temp->next = start->next;
start->next = temp;
}
}
我是新手,请帮忙
问题出在Patient* newPatient(int age, char *p, char *name)
中:您没有为priority
和name
分配新的内存。您要么始终为p
和name
指向的priority
和name
传递新分配的内存,要么为priority
中的name
和newPatient()
分配新的内存,然后执行[C0 ]