如下题:为什么单链表不能输出了?

chenqin231 2012-02-27 11:56:29
#include <stdio.h>
#include <malloc.h>

typedef struct stu *list;

struct stu{

char name[10];
int age;
int class_num;
struct stu *next;
};
int main(void)
{
list st1 = NULL;
list head = NULL;
list p = NULL;
int num = 0;

for(num=0; num<3; num++)
{
st1 = (struct stu *)malloc(sizeof(struct stu));
if(head == NULL)
head = st1;

printf("请输入第%d个学生的姓名:",num+1);
scanf("%s",st1->name);
printf("请输入第%d个学生的年龄:",num+1);
scanf("%d",&st1->age);
printf("请输入第%d个学生的学号:",num+1);
scanf("%d",&st1->class_num);
st1 = st1->next;
st1 = NULL;

}
printf("学生的信息输出:\n");
for(num=0; num<3; num++)
{
printf("结果统计:第%d个学生姓名是:%s\t年龄是:%d\t 学号是:%d\n",4-num, head->name, head->age, head->class_num);
/*释放链表*/
p = head;
head = head->next;
free(p);

}

return 0;
}
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lc19881029 2012-02-28
  • 打赏
  • 举报
回复
尾插法:
p->next=st1;
p=st1
pengzhixi 2012-02-28
  • 打赏
  • 举报
回复
你第一个循环并没有串成一个链表
liru125504 2012-02-28
  • 打赏
  • 举报
回复
for(num=0; num<3; num++)
{
st1 = (struct stu *)malloc(sizeof(struct stu));
printf("请输入第%d个学生的姓名:",num+1);
scanf("%s",st1->name);
printf("请输入第%d个学生的年龄:",num+1);
scanf("%d",&st1->age);
printf("请输入第%d个学生的学号:",num+1);
scanf("%d",&st1->class_num);
if(head == NULL)
{
head = st1;
}
else
{
p->next = stl ;
}
p = stl ;

}

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧