/*** 动态链表的建立 ***/
#include<stdio.h>
#include<stdlib.h>
#define ID struct Student
#define LEN sizeof(ID) //该宏定义为后续结构体的使用提供便捷
ID * creative( int ); //子函数申明
ID
{
int num;
int score;
ID * next;
}; //结构体申明
int main(void)
{
int n;
printf(" Enter the n "
", n = \n"); //printf() 的一种表示方法,C primer plus中介绍
scanf("%d",&n);
printf(" Piease waiting .....\n");
ID * p = creative(n); //p存放返回的首地址
printf(" 现在开始输出成绩 \n");
while( p->next != NULL )
{
printf("%d %d\n", p->num , p->score );
p = p->next;
}
printf("%d %d\n", p->num , p->score );
printf(" OK! \n");
ID * creative( int n )
{
ID * head ,* p; //结构体的指针定义
p = head = (ID *)malloc(LEN); / /申请动态内存空间,VC++6.0需要将(void *)强制转化为(ID *)
scanf("%d,%d", &head->num , &head->score );
while(n-1) //n-1 的原因是因为前面已经有一个节点
{
p->next = (ID *)malloc(LEN);
--n;
scanf("%d,%d", &(p->next)->num , &p->next->score ); //注意两者区别
p = p->next ;
}
p->next = NULL;
return head; //返回首地址
}
#include<stdio.h>
#include<stdlib.h>
#define ID struct Student
#define LEN sizeof(ID) //该宏定义为后续结构体的使用提供便捷
ID * creative( int ); //子函数申明
ID
{
int num;
int score;
ID * next;
}; //结构体申明
int main(void)
{
int n;
printf(" Enter the n "
", n = \n"); //printf() 的一种表示方法,C primer plus中介绍
scanf("%d",&n);
printf(" Piease waiting .....\n");
ID * p = creative(n); //p存放返回的首地址
printf(" 现在开始输出成绩 \n");
while( p->next != NULL )
{
printf("%d %d\n", p->num , p->score );
p = p->next;
}
printf("%d %d\n", p->num , p->score );
printf(" OK! \n");
return 0;
}
ID * creative( int n )
{
ID * head ,* p; //结构体的指针定义
p = head = (ID *)malloc(LEN); / /申请动态内存空间,VC++6.0需要将(void *)强制转化为(ID *)
scanf("%d,%d", &head->num , &head->score );
while(n-1) //n-1 的原因是因为前面已经有一个节点
{
p->next = (ID *)malloc(LEN);
--n;
scanf("%d,%d", &(p->next)->num , &p->next->score ); //注意两者区别
p = p->next ;
}
p->next = NULL;
return head; //返回首地址
}