我只是试图通过单个链表实现优先级队列。
这只是一个根据优先级将元素插入列表的代码。
请告诉我们这是怎么回事。
能否请您告诉我为什么会出现细分错误...
typedef struct node
{
int data;
int pr;
struct node* next;
}Node;
Node* head=NULL;
Node* create(int d, int p)
{
Node *temp=(Node*)malloc(sizeof(Node));
temp->data=d;
temp->pr=p;
temp->next=NULL;
return temp;
}
void push(int data ,int pr)
{
Node* head=NULL;
Node* temp=create(data,pr);
Node* cnode=head;
if(head->pr>temp->pr)
{temp->next=head;
head=temp;
}
else{
while(cnode && cnode->next->pr< temp->pr)
{
cnode=cnode->next;
}
temp->next=cnode->next;
cnode->next=temp;
}
}
void display()
{
Node* cnode=head;
while(cnode->next!=NULL)
{
printf("_%d_%d_ -->",cnode->data,cnode->pr);
}
}