C语言结构体指针问题
#include"stdio.h"#include"stdlib.h"typedefstructnode2{intpn;intpfn;structnode2*next;}...
#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都是一样的是什么鬼
展开
4个回答
展开全部
比如
struct LNode{
element data;
struct LNode *next;
}*Linklist;
LNode是结构变量名;
Linklist就是指针,指向该结构体的指针。
调用内部应为:结构变量名.成员名
struct LNode{
element data;
struct LNode *next;
}*Linklist;
LNode是结构变量名;
Linklist就是指针,指向该结构体的指针。
调用内部应为:结构变量名.成员名
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void main()
{
input();
int i;
tpage *p = freee;
for(i=0;i<M;i++)
{
printf("%d %d \n",p->pn,p->pfn);
p = p->next;
}
}
你的链表一直没有移动,打印出来的 始终是第一个节点的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没看全部,就最后那个循环,写的printf("%d %d \n",freee->pn,freee->pfn);就是反复输出,freee->pn和freee->pfn),当然是一样的。你意图要干啥?说清楚了才好改!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你指针有没有移动,输出3次都是同一个节点,当然是一样的了。
可以这样改试试:
p = freee ;
for(i=0;i<M;i++)
{
printf("%d %d \n",p->pn,p->pfn);
p = p ->next ;
}
可以这样改试试:
p = freee ;
for(i=0;i<M;i++)
{
printf("%d %d \n",p->pn,p->pfn);
p = p ->next ;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询