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都是一样的是什么鬼 展开
 我来答
在晴天的雨伞
2016-05-25 · TA获得超过6868个赞
知道大有可为答主
回答量:5761
采纳率:86%
帮助的人:1133万
展开全部
比如
struct LNode{
element data;
struct LNode *next;

}*Linklist;
LNode是结构变量名;
Linklist就是指针,指向该结构体的指针。
调用内部应为:结构变量名.成员名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_叶子妞妞_
2016-05-25 · TA获得超过3672个赞
知道小有建树答主
回答量:327
采纳率:83%
帮助的人:84.4万
展开全部
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;

}

}

你的链表一直没有移动,打印出来的 始终是第一个节点的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2016-05-25 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6281万
展开全部
没看全部,就最后那个循环,写的printf("%d %d \n",freee->pn,freee->pfn);就是反复输出,freee->pn和freee->pfn),当然是一样的。你意图要干啥?说清楚了才好改!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jesry_wu
2016-05-25 · TA获得超过938个赞
知道小有建树答主
回答量:793
采纳率:72%
帮助的人:196万
展开全部
你指针有没有移动,输出3次都是同一个节点,当然是一样的了。
可以这样改试试:
p = freee ;
for(i=0;i<M;i++)
{
printf("%d %d \n",p->pn,p->pfn);
p = p ->next ;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式