永发信息网

C语言:为什么我的程序的while(p){ p=p->next; }不能执行下去?

答案:3  悬赏:50  手机版
解决时间 2021-03-01 10:30
void print_menu_main(){
stu *p;
p= (stu *)malloc(sizeof(stu));
head=p;
for(int i=0;i<=2;i++){
if(i<2)p=p->next=(stu *)malloc(sizeof(stu));
}
p->next=NULL;
printf("%d\n",p);
p=head;
printf("%d\n",p);

while(p){
p=p->next;
}
}

typedef int Status;
typedef float ElemType;
typedef struct student{
char ID2[MAX];
char name[MAX];
Status basic;
Status postsalary;
Status benefit;
Status insure;
Status pubfund;
struct student *next;
}stu;
最佳答案
看不出来有什么问题。程序提示什么?
全部回答
注意head每次指向哪个节点 head->next总是指向已经经过逆置的最后一个节点,也就是新的经过逆置的头节点 所以每次完成一个新的节点的逆置,要将其next指向上一个逆置的节点,刚好是head->next指向的节点 比如原来有链表 a->b->c->d->null 开始head->next = a, head->next->next=b 首先让p=a,并让a->next=null, 也就是让a成为尾节点 然后q指向b,此时head->next还是指向a的,也就是刚刚完成逆置的节点 while开始之后 每次都将q赋值给p,于是 p=b, q =c, b->next=head->next = a, head-next = b 此时head->next指向b,刚好又是刚完成逆置的节点 以后继续循环
while(p){p=p->next;} p为指针,是地址,地址不为零,只能原地打转。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
宇顺通讯在哪里啊,我有事要去这个地方
鸠皮鹤发如鬼母,夫鬼母者,焉能不 谁知道什
电动拖把哪种好
盛世医疗自动电子血压计多少元智能语音型
母蛮这个地址在什么地方,我要处理点事
建国南里在哪里啊,我有事要去这个地方
腰带系在腰上的哪个部位比较好
为什么别人看不到我微信动态
公历1971四月二十五是几多号
我在烟台市里的振华买了达芙妮的鞋子 当时没
“巴东三峡巫峡长,袁鸣三声泪沾裳”的诗句,
萨拉玛萨格村地址有知道的么?有点事想过去
绿色产业包括哪些
罗麦加盟需要多少钱?
我想知道什么叫男女发生关系
推荐资讯
清朝沈阳是留都宫殿是什么意思?
clothesaregenderless是什么意思
现代粗粮星海广场店地址在哪,我要去那里办事
上海大众重要岗位测评结果是替换是什么意思?
汇赢·商业广场在哪里啊,我有事要去这个地方
梦见许多大小蜘蛛成群聚集到床头窗帘下
【完美反义词】完美无瑕的反义词是什么啊
花旗银行(中国)上海徐家汇支行地址在什么地方
患儿,女,4岁,在床上翻身时左上肢压于躯干
若方程X^2-2X+lg(2a^2-a)=0有一个正跟和一个
为什么第二道题答案是A? (一定要解析!!!)
天天炫舞里的钻石会员多少钱一个月
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?