问题 J: 高程08-02:编写函数,遍历一个链表

问题 J: 高程08-02:编写函数,遍历一个链表

时间限制: 1 Sec  内存限制: 128 MB
提交: 2062  解决: 1397
[提交][状态][讨论版][命题人:]

题目描述

编写函数,遍历输出链表中数据。(提示:利用结构体数据)

#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct STUDENT)
struct STUDENT

   long num;
   float score;
   struct STUDENT *next;
};
int n;
void print(struct STUDENT *head)

 //在这里添加函数体代码

//head或者为空指针,或者指向链表的第一个数据结点,没有头结点

// 输出格式

1 88.000000
2 99.000000
//即每一行有两项,用空格隔开,第一个是一个整数num,第二个是float数

//每一行后面有一个换行符号
}

struct STUDENT *creat() 

   struct STUDENT *head,*p1,*p2;  n=0;
   p1=p2=( struct STUDENT*) malloc(LEN); 
   scanf("%ld%f",&p1->num,&p1->score); 
   head=NULL;
   while(p1->num!=0)
   {

         n=n+1;
         if(n==1) 

              head=p1;
         else  

              p2->next=p1;
         p2=p1;
         p1=(struct STUDENT*)malloc(LEN); 
         scanf("%ld%f",&p1->num,&p1->score);
    }
   p2->next=NULL;   

   free(p1); 

   return(head);
}

void freenoheadlist(struct STUDENT *h)
{
struct STUDENT *t;
while(h)
{
t=h->next;
free(h);
h=t;
}
}
int main()

   struct STUDENT *pt;
   pt=creat();  
   print(pt); 

   freenoheadlist(pt);
   return 0;
}

//注意首先要输入数据建立链表,建立链表时,学生结构体数据由学号、成绩和下一节点指针组成,输入以学号为0时结束。


输入

输入学生学号和成绩建立链表,以空格分隔,当输入学号为0时建立结束

输出

输出遍历链表数据

样例输入

1 88
2 99
3 77
0 0

样例输出

1 88.000000
2 99.000000
3 77.000000

提示

[提交][状态]