0
点赞
收藏
分享

微信扫一扫

数据结构:链表实现学生成绩的排序输出

高子歌 2022-05-03 阅读 82

#include <iostream>
using namespace std;
#include <stdlib.h>
typedef struct LNode
{
    int num;
    int grade;
    LNode *next;
}LNode,*LinkLNode;
//初始化链表 
bool InitLink(LinkLNode &L)
{
    L=new LNode;
    L->next=NULL;
    return true;
}
//创造学生的成绩单,在创造的同时排序 
void CreatLink(LinkLNode &L,int n)
{
    LNode *pre,*q;//pre用于保存前一个结点,q用于和新学生的成绩比较 
    int i=0;
    for(i=0;i<n;i++)
    {
        LNode *s;//创建新结点,存放新的数据 
        s=new LNode;
        pre=L;//每次循环都要从头开始比较,令pre等于头结点 L
        q=L->next;//q等于首元结点 
        s->num=i+1;
        s->grade=rand()%100;//随机生成学生成绩(控制在100以内) 
        while(q&&s->grade<q->grade)
        {   
            //当q不为空且新学生成绩小于当前学生成绩的时候
            //更新pre,保存当前结点,并且往后扫描 
            pre=q;
             q=q->next;
        }
        //当找到比新学生成绩低的学生结点时,将新学生结点插在这个学生之前
        s->next=q; 
        pre->next=s;
    }
 }

//打印成绩单  
void display(LinkLNode L)
{
    LNode *p;
    p=L->next;
    while(p)
    {
        cout<<"学号:"<<p->num<<" "<<"成绩:"<<p->grade<<endl;
        p=p->next;
    }
 } 
int main()
{
    LNode *L;
    InitLink(L);//初始化L 
    CreatLink(L,15);//创造65个学生的成绩排名表 
    cout<<"学生成绩按降序排列为:"<<endl;
    display(L);//打印排名表 
    return 0; 
}
 

举报

相关推荐

0 条评论