7-1 学生信息输入输出 (10分) PTA
输入若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束,用单向链表组织这些学生信息后,再按顺序输出。
思路就是采用带头结点的尾插法,然后顺序顺换输出即可。
输入样例:
1 zhang 78
2 wang 80
3 li 75
4 zhao 85
0
输出样例:
1 zhang 78
2 wang 80
3 li 75
4 zhao 85
#include <stdio.h>
#include <stdlib.h>
struct ListNode{
int data;
char name[20];
int score;
struct ListNode *next;
};
int main(){//带头结点的尾插法。
struct ListNode *head,*p,*tail;
int x;
head = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next = NULL;//千万记得给头结点初始化后继节点为NULL
tail = head;
scanf("%d",&x);
while(x != 0){
p = (struct ListNode*)malloc(sizeof(struct ListNode));
p->next = NULL;
p->data = x;
scanf("%s%d",p->name,&p->score);
tail->next = p;//给尾插啊!!!毕竟尾插法
tail = p;
scanf("%d",&x);
}
tail->next = NULL;//注意结尾的后继节点为NULL
for(p = head->next; p != NULL; p = p->next){
printf("%d %s %d\n",p->data,p->name,p->score);
}
return 0;
}