关于链表,函数的C语言编程
发布网友
发布时间:2022-05-27 13:34
我来回答
共1个回答
热心网友
时间:2023-10-25 17:57
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
struct link{
int num;//学号
char name[30];//姓名
char sex;//性别
double score;//成绩
link *next;
};
int main(){
link *sort(link *h);
link *dele(double l,double r,link *h);
int i;
link *head=NULL,*q;
//读入10个节点
for(i=0;i<10;i++){
q=(link *)malloc(sizeof(link));
scanf("%d %s %c %lf",&q->num,q->name,&q->sex,&q->score);
q->next=head;
head=q;
}
head=sort(head);
q=head;
while(q!=NULL){
cout<<q->num<<' '<<q->name<<' '<<q->sex<<' '<<q->score<<endl;
q=q->next;
}
double left,right;
printf("分数段:");
scanf("%lf %lf",&left,&right);
head=dele(left,right,head);
q=head;
while(q!=NULL){
cout<<q->num<<' '<<q->name<<' '<<q->sex<<' '<<q->score<<endl;
q=q->next;
}
return 0;
}
link *sort(link *h){
int i,j,t;
char tmp[30];
char ch;
double x;
link *q,*p;
for(i=1;i<10;i++){
q=h;
for(j=0;j<10-i;j++){
if(q->score<q->next->score){
t=q->num;q->num=q->next->num;q->next->num=t;
ch=q->sex;q->sex=q->next->sex;q->next->sex=ch;
x=q->score;q->score=q->next->score;q->next->score=x;
strcpy(tmp,q->name);strcpy(q->name,q->next->name);strcpy(q->next->name,tmp);
}
q=q->next;
}
}
return h;
}
link *dele(double l,double r,link *h){
link *q;
while(h!=NULL && h->score>=l && h->score<=r) h=h->next;
if(h==NULL) return h;
q=h;
while(q->next!=NULL){
if(q->next->score>=l && q->next->score<=r){
q->next=q->next->next;
}
else
q=q->next;
}
return h;
}