单链表实现学生成绩从高到低排序(C语言)
2016-09-09 09:59
381 查看
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
typedef struct student
{
int score;//学生成绩
struct student *next;
}student;
student *input(student *stu);//输入成绩
void output(student *s);//打印成绩
int main()
{ student *s,*stu;
stu=(student *)malloc(sizeof(student ));//建表 (含有头结点)
stu->next=NULL;
s=input(stu);
output(s);
system("pause");
return 1;
}
student *input(student *stu)
{ int i,a;
student *p,*q;
for(i=0;i<10;i++)
{
printf("请输入学生分数:\n");
scanf("%d",&a);
q=stu;
p=(student *)malloc(sizeof(student));
p->score=a;
while(q->next!=NULL)//找到插入节点的
{
if(q->next->score < p->score)
break;
q=q->next;
}
p->next=q->next;//头插法实现从高到低
q->next=p;
}
return stu;
}
void output(student *s)
{ student *p=s->next;
while(p!=NULL)//打印成绩
{
printf("%d ",p->score);
p=p->next;
}
}
#include"stdlib.h"
#include"string.h"
typedef struct student
{
int score;//学生成绩
struct student *next;
}student;
student *input(student *stu);//输入成绩
void output(student *s);//打印成绩
int main()
{ student *s,*stu;
stu=(student *)malloc(sizeof(student ));//建表 (含有头结点)
stu->next=NULL;
s=input(stu);
output(s);
system("pause");
return 1;
}
student *input(student *stu)
{ int i,a;
student *p,*q;
for(i=0;i<10;i++)
{
printf("请输入学生分数:\n");
scanf("%d",&a);
q=stu;
p=(student *)malloc(sizeof(student));
p->score=a;
while(q->next!=NULL)//找到插入节点的
{
if(q->next->score < p->score)
break;
q=q->next;
}
p->next=q->next;//头插法实现从高到低
q->next=p;
}
return stu;
}
void output(student *s)
{ student *p=s->next;
while(p!=NULL)//打印成绩
{
printf("%d ",p->score);
p=p->next;
}
}
相关文章推荐
- C++ map first second
- CAS单点登录客户端--C++版
- c++string类详解收集
- undefined reference to typeinfo - C++ error message
- 解析char *p与char p[]
- 浅谈C/C++中的指针和数组(一)
- C++栈与队列
- C++ stringstream
- C语言结构体和指针
- c语言 string.h 详解
- Lambda表达式.C++11.JAVA8.Python
- c语言字符处理函数常见使用集合
- 如何用C语言(VisualStudio)调用NLPIR进行中文分词
- C++多态(静多态和动多态)
- c++的RTTI机制详解
- C++学习基础七——深复制与浅复制
- 矩阵的特征值和特征向量的雅克比算法C/C++实现
- c语言顺序表的实现与基本操作
- C++读取每行特定列的整数
- C++简单排序算法之插入排序