我是C编程的新手,我正在尝试为链表编写显示方法。我的问题是角色应该优先考虑。我的意思是它应该是这样的:P1 P2 P3 S5 S9 S20 A2 A6 A4。我的代码有效,但我不知道如何订购这样的字符。这是我的代码:
struct node {
int pages;
char userType;
struct node *next;
};
struct node *first= NULL;
struct node *temp=NULL;
void enqueue(char ch, int pr){
struct node *np, *temp, *prev;
int found;
np= (struct node *)malloc(sizeof(struct node));
np->userType= ch;
np->pages= pr;
np->next= NULL;
if(first == NULL){
first=np;
return;
}
temp= first;
found=0;
while((temp != NULL) && (!found)){
if(temp->pages < pr){
prev= temp;
temp= temp->next;
}else{
found=1;
}
}
if(prev == NULL){
np->next= first;
first= np;
}else{
prev->next=np;
np->next=temp;
}
}
void display(){
struct node *np;
np= first;
while (np != NULL){
printf("%d", np->pages);
np= np->next;
}
}
main(){
srand(time(NULL));
int p,d,i;
char c;
for(i=0; i<50; i++){
p=1+(rand()%20);
d=rand()%3;
switch(d){
case 0: c= 'P'; break;
case 1: c= 'A'; break;
case 2: c= 's'; break;
}
enqueue(c,p);
}
display();
}
你能提供任何解决方案吗? Thanx提前
答案 0 :(得分:1)
问题是在enqueue()
函数中插入节点时:
变化:
struct node *np, *temp, *prev;
要:
struct node *np, *temp, *prev=NULL;
剧透代码 here 。