您的位置:首页 > 理论基础 > 数据结构算法

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

2009-06-24 02:29 585 查看
----非常火大.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);

printf("\tSum: %d\n",head->Chi+head->Maths);

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

head=head->Next;

}

}

main.c:↓

1 #include<stdio.h>

2 #include<malloc.h>

3 #include<stdlib.h>

4 #include <string.h>

5 #include <sstream>

6

7

8 #ifndef _head_h

9 #define _head_h

void ShowMenu();

void ShowSubMenu();

struct Student{

char No[20];

char Name[8];

int Maths;

int Chi;

struct Student *Next;

struct Student *Previous;

};

void SetTempValue(struct Student *s);

struct Student * StudentInit(struct Student *s);

void set(struct Student *p,struct Student *s);

void Add(struct Student *s,struct Student *HL);

void DeleteThisOne(struct Student *s);

void Edit(struct Student *NewS,struct Student *S);

void DisplayThisOne(struct Student *s);

void DisplayAll(struct Student *head);

void exchange(struct Student *p,struct Student *s);

struct Student* SortByNo(struct Student *s);

struct Student* SortByMaths(struct Student *s);

struct Student* SortByChi(struct Student *s);

struct Student* SortBySum(struct Student *s);

struct Student * Sort(int i,struct Student *s);

struct Student * StudentInit(struct Student *s);

void Read(struct Student *h);

void Write(struct Student *h);

好了代码贴完 收工!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: