首页 > 用户发贴区 > 编程问题提问区 > 动态链表问题,搞了几个星期都没有解决的问题
2009
04-21

动态链表问题,搞了几个星期都没有解决的问题

下面是我写的一个程序,目的是从键盘输入学生的名字(name)和分数(score)


然后输出。


例:


input  


zhang san


89


li si


96


over


output


The score of zhang san is 89


The score of li si is 96


但是,程序运行之后,却输出了四行。急待解决!


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct student
{
 char name[20];
 int score;
 struct student *next;
};
main()
{
 char str[20];
 int s;
 struct student *head,*q,*p;
 p=(struct student *)malloc(sizeof(struct student));
 gets(str);scanf(“%d”,&s);
 strcpy(p->name,str);p->score=s;/*从键盘输入值,并赋值*/
 head=p;
 while(1)
 {
  q=(struct student *)malloc(sizeof(struct student));
  gets(str);
  if(!strcmp(str,”over”))
    {free(q);break;}/*判断如果输入的是over 则退出循环,并且释放内存空间*/
 scanf(“%d”,&s);
  strcpy(q->name,str);q->score=s;
  p->next=q;
  p=q;
 }
 p->next=’\0′;
 while(head)
 {
  printf(“The score of %s is %d\n”,head->name,head->score);
  head=head->next;
 }
}


动态链表问题,搞了几个星期都没有解决的问题》有 1 条评论

  1. m5302082 说:

    怎么没有人来回帖啊,难道问题太难了???

留下一个回复