问题描述
【问题描述】输人若干个学生信息(包括学号、姓名和成绩),输人学号为0时输人结束,建立一个单向链表,再输人一个成绩值,将成绩大于等于该值的学生信息输出。试编写相应程序。
【样例输入】
1 zhang 78
2 wang 80
3 Li 75
4 zhao 85
0
80
【样例输出】
2 wang 80
4 zhao 85
代码
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>
using namespace std;
struct node{
int id;
char name[16];
int score;
struct node *next;
};
typedef struct node LNode,*LinkList;
void CreateList(LinkList head);
void PrintList(LinkList head);
int main(){
LinkList head;
head=(LinkList)malloc(sizeof(LNode)); //分配空间
head->next = NULL;
CreateList(head);
PrintList(head);
return 0;
}
void CreateList(LinkList head){
LinkList p,rear=head;
int num,sc;
char nm[16];
//scanf("%d%s%d",&id1,name1,&score1)
//printf("输入若干整数,输入0表示结束\n");
scanf("%d",&num);
while(num!=0){
scanf("%s%d",nm,&sc);
p=(LinkList) malloc(sizeof(LNode));
p->id=num;
strcpy(p->name,nm);
p->score=sc;
rear->next=p;
rear=p;
cin>>num;
}
rear->next=NULL;
}
//查询输出
void PrintList(LinkList head){
LinkList p=head->next;//定义一个指针p,指向表中第一个元素
int grade;
cin>>grade;
while(p){
if((p->score)>=grade){
//cout<<p->id<<""<<p->name<<""<<p->score<<endl;
printf("%d %s %d\n",p->id,p->name,p->score);
}
p=p->next;
}
}