#include "stdio.h"#include "stdlib.h"typedef struct node2{ int pn; int pfn; struct node2 *next;}tpage;tpage *freee=NULL,*busy=NULL,*p;int M;void sort(){ tpage *s; s=freee; if(freee==NULL) { p->next=freee; freee=p; } else { while(s->next!=NULL) s=s->next; s->next=p; }}void input(){ int i; printf("输入内存块数:\n"); scanf("%d",&M); for(i=0;i<M;i++) { p=(tpage *)malloc(sizeof(tpage)); if(p==NULL) { perror("malloc"); exit(1); } p->pn=-1; p->pfn=i; p->next=NULL; sort(); }}void main(){ input(); int i; for(i=0;i<M;i++) { printf("%d %d \n",freee->pn,freee->pfn); }}输出结果freee->pfn都是一样的是什么鬼
你的链表一直没有移动,打印出来的 始终是第一个节点的。