|
|

楼主 |
发表于 2012-12-7 17:21:08
|
显示全部楼层
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
char name[11];
int no;
int score;
};
typedef struct node
{
struct student data;
struct node *next;
}ListNode,*LinkList;
LinkList CreateList(int n)
{//创建链表。
LinkList head;
ListNode *p,*q; int i;
head=(ListNode *)malloc(sizeof(ListNode));
p=head;
for(i=1;i<=n;i++)
{
q=(ListNode *)malloc(sizeof(ListNode));
printf("请输入第%d个学生的姓名,学号和成绩:\n",i);
scanf("%s%d%d",q->data.name,&q->data.no,&q->data.score);
p->next=q;
p=q;
}
printf("\n\n");
p->next=NULL;
return head;
}
void show_ww(LinkList head,int n)
{//输出名字叫ww的学生信息。
int i;
LinkList h;
h=head->next;
printf("姓名是ww的学生信息:\n");
for(i=0;i<n;i++)
{
if((strcmp(h->data.name,"ww"))==0)
{
printf("姓名:%3s; 学号:%3d; 成绩:%3d\n",h->data.name,h->data.no,h->data.score);
h=h->next;
}
}
printf("\n\n");
}
void show_100(LinkList head,int n)
{//输出分数为100的学生信息。
int i;
LinkList h;
h=head->next;
printf("成绩为100分的学生信息:\n");
for(i=1;i<=n;i++)
{
if(h->data.score==100)
printf("姓名:%3s; 学号:%3d; 成绩:%3d\n",h->data.name,h->data.no,h->data.score);
h=h->next;
}
printf("\n\n");
}
void Delete_low(LinkList head)
{//删除低于60分的学生信息。
ListNode *q,*p;
p=head;
while(p->next!=NULL)
{
q=p->next;
if(p->next->data.score<60)
{
p->next=q->next;
free(q);
}
else
p=p->next;
}
}
void Show_del(LinkList head)
{//输出删除低于60分的学生。
ListNode *p;
p=head->next;
printf("成绩大于60分的学生信息:\n");
while(p!=NULL)
{
printf("姓名:%3s; 学号:%3d; 成绩:%3d",p->data.name,p->data.no,p->data.score);
p=p->next;
printf("\n");
}
printf("\n\n");
}
int main()
{
int n;
LinkList H;
printf("请输入学生总数:\n");
scanf("%d",&n);
H=CreateList(n);
show_ww(H,n);
show_100(H,n);
Delete_low(H);
Show_del(H);
return 0;
system("pause");
}
:funk::funk::funk::funk::funk::funk::funk::funk::funk::funk::funk: |
|