• 数据结构学习 之 链表 练习 链表排序功能.(热身练习)


    ----非常火大.cao!去年的程序到今年竟然运行不成功 ,一个 排序问题搞到现在, ╮(╯▽╰)╭...可能不是当时的最终版本...

    本来准备 结合 我的 上一次mysql 操作 练习 将数据 保存到 mysql 数据库 的; 没想到.... 

    还没解决....

    明天再说! 先洗澡睡觉...吃大亏了今天. ...


    先介绍下基本功能:

          一个用于存储学生基本信息 的 链表,实现在任意位置 添加,删除,修改,的功能,以及排序功能'

    学生有是个属性: 学号,姓名,语文分数,数学分数; 

         --------------------------------------------------

                1.按下'r'开始读取文件信息!

                2..按下's'开始对其进行排序!

                3.按下'a'开始添加信息!

        4.按下'd'删除当前信息!

        5.按下'e'修改当前信息!

        6.按下'n'显示下一条信息!

        7.按下'p'显示上一条信息!

        8.按下'v'显示全部信息!

        9.按下'w'开始写入所有信息!

         10.按下'q'退出程序!

    --------------------------------------------------

    printf("\n\twarning:排序`写入操作需要先读文件或是写!\n"); 

    排序功能: 

    ---------------------------------------------

    printf("\t\t1.按下数字0开始根据No进行排序!\n");

    printf("\t\t2.按下数字1开始根据总分进行排序!\n");

    printf("\t\t3.按下数字2开始根据数学进行排序!\n");

    printf("\t\t4.按下数字3开始根据语文进行排序!\n");

    printf("\t\t5.按下其他数字开始根据学号进行排序!\n");

    printf("--\t---------------------------------------------\n"); 


    文件结构:

     main.c:主函数所在文件

     menu.c:菜单显示功能文件

     Read.c: 读取文件中学生信息功能的文件

     Sort.c:排序功能文件

     Student.c:学生信息操作基本文件;包括链表 添加 . 删除 .修改. 和 基本信息 显示功能

     Write.c : 学生信息写操作

     head.h :头文件

    贴下源码(VS C++ 编译器 版本-- linux 环境 版本就不贴了):

      


      1 //student.c 文件
      2 
      3 #include<stdio.h>
      4 #include"head.h"
      5 #include<malloc.h>
      6 #include<stdlib.h>
      7 #include<stdafx.h>
      8 #include <iostream>
      9 
     10 void SetTempValue(struct Student *s)
     11 {
     12     printf("Input No:\t");
     13     scanf("%s",&(s->No));
     14 
     15     printf("Input Name:\t");
     16     scanf("%s",&(s->Name));
     17 
     18     printf("Input Maths:\t");
     19     scanf("%d",&(s->Maths));
     20 
     21     printf("Input Chi:\t");
     22     scanf("%d",&(s->Chi));
     23     
     24 }
     25 
     26 
     27 struct Student * StudentInit(struct Student *s)
     28 {
     29     strcpy(s->No,"");
     30     strcpy(s->Name,"");
     31     s->Maths=0;
     32     s->Chi=0;
     33     s->Next=NULL;
     34     s->Previous=NULL;
     35     s->Next=s;
     36     return s;
     37 }
     38 
     39 
     40 
     41 void set(struct Student *p,struct Student *s)
     42 {
     43     strcpy(p->No,s->No);
     44     strcpy(p->Name,s->Name);
     45     p->Maths=s->Maths;
     46     p->Chi=s->Chi;
     47 }
     48 
     49 
     50 void Add(struct Student *s,struct Student *HL)
     51 {
     52     struct Student *newS = (struct Student *)malloc(sizeof(struct Student));
     53     set(newS,s);
     54     //exchange shit!
     55     newS->Next=HL->Next;
     56     newS->Previous = HL;
     57 //注意
     58     HL->Next->Previous=newS;
     59     
     60     HL->Next = newS;
     61     HL->Previous=NULL;
     62 }
     63 
     64 void DeleteThisOne(struct Student *s)
     65 {
     66     struct Student *L;
     67     L=s->Previous;
     68     L->Next=s->Next;
     69     s->Next->Previous=L;
     70     free(s);    
     71 }
     72 
     73 void  Edit(struct Student *des,struct Student *src)
     74 {
     75     strcpy(des->No,src->No);
     76     strcpy(des->Name,src->Name);
     77     des->Maths=src->Maths;
     78     des->Chi=src->Chi;
     79     
     80 }
     81 
     82 void DisplayThisOne(struct Student *s)
     83 {
     84     printf("\tNo:     %s\n",s->No);
     85     printf("\tName: %s\n",s->Name);
     86     printf("\tMaths: %d\n",s->Maths);
     87     printf("\tChi:     %d\n",s->Chi);
     88     printf("\tChi:     %d\n",s->Chi+s->Maths);
     89 }
     90 
     91 void DisplayAll(struct Student *head)
     92 {
     93     head=head->Next;
     94     while(head->Previous!=NULL)
     95     {
     96         printf("\tNo:     %s\n",head->No);
     97         printf("\tName :  %s\n",head->Name);
     98         printf("\tMaths:  %d\n",head->Maths);
     99         printf("\tChi:    %d\n",head->Chi);
    100         printf("\tSum:    %d\n",head->Chi+head->Maths);
    101         printf("-------------------------------------------------------------\n");
    102         head=head->Next;
    103       }
    104 }
    105 
    main.c:↓
    Code

    sort.c:
    Code

    read.c

    Code

    write.c:

    Code

    menu.c

    Code

    head.h

    Code

    好了代码贴完 收工!

  • 相关阅读:
    java环境变量配置
    经纬度与度分秒转换
    Linux下屏幕截图
    mCustomScrollbar动态加载滚动条
    解决PHPExcel列超过26的问题
    解决PHPExcel长数字串显示为科学计数
    URL获取并修改参数【转】
    Windows下启动nginx,关闭nginx
    Linux 查看目录的相关权限
    Python文件装换成C文件,主要用于隐藏核心文件实现步骤
  • 原文地址:https://www.cnblogs.com/ToDoToTry/p/1509864.html
Copyright © 2020-2023  润新知