具体代码:
123.h:
#include <stdio.h>
struct STUDENT
{
char Num[30];/*学生学号*/
char Name[30];/*学生姓名*/
char className[30];/*班级名称*/
char telNumber[30];/*学生手机号*/
char email[30];/*学生邮箱*/
char course[30];/*课程信息*/
int score;/*成绩*/
};
typedef struct LNode
{
struct STUDENT data;
struct LNode* next;
}LNode,*Linklist;
int Initlist(Linklist *L);//初始化单链表
int Creatlist(Linklist L);//头插法生成单链表
void Display(Linklist L);//显示学生信息
int SearchNum(Linklist L,char Num[30]);//学号查询
int SearchName(Linklist L,char Name[30]);//姓名查询
void SortNum(Linklist L);//编号排序
void SortName(Linklist L);//姓名排序
void SortScore(Linklist L);//成绩排序
int Insert(Linklist L,char Num[30]);//插入信息
int Del(Linklist L,char Num[30]);//按学号删除
int Alter(Linklist L,char Num[30]);//更改信息
vvv.cpp
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include "123.h"
int Initlist(Linklist *L)//初始化线性表
{
(*L)=(Linklist)malloc(sizeof(LNode));
if(!(*L))
return (0);
(*L)->next=NULL;
return true;
}
/***************************************************************************************
*功能描述:运用头插法建立单链表
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:消息字段之间用分号(;)隔离
***************************************************************************************/
int Creatlist(Linklist L)//头插法生成单链表
{
Linklist s,r;
s=(Linklist )malloc(sizeof(LNode));
if(!s)
{
return 0;
}
else
{
printf("请输入学生的个人信息\n");
printf("学号: \n");
scanf(" %s",s->data.Num);
printf("姓名: \n");
scanf(" %s",s->data.Name);
printf("班级: \n");
scanf(" %s",s->data.className);
printf("手机号: \n");
scanf(" %s",s->data.telNumber);
printf("邮箱: \n");
scanf(" %s",s->data.email);
printf("专业课程: \n");
scanf(" %s",s->data.course);
printf("数学成绩: \n");
scanf(" %d",&s->data.score);
}
s->next=L->next;
L->next=s;
return true;
}
/***************************************************************************************
*功能描述:显示学生的信息
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:消息字段之间用分号(;)隔离
***************************************************************************************/
void Display(Linklist L)//显示学生信息
{
Linklist p;
char flat=0;
while(p)
{
printf("学号\t姓名\t班级\t手机号\t邮箱\t专业课程\t成绩\n");
for(p=L->next;p;p=p->next)
{
printf("%s\t%s\t%s\t%s\t\t%s\t %s\t%d\n",p->data.Num,p->data.Name,p->data.className,p->data.telNumber,p->data.email,p->data.course,p->data.score);
flat=1;
}
}
if(!flat)
{
printf("无法显示学生的信息,请进入其他功能区 \n");
}
}
/***************************************************************************************
*功能描述:按学号进行查询
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:消息字段之间用分号(;)隔离
***************************************************************************************/
int SearchNum(Linklist L,char Num[20])//学号查询
{
LNode *p;
char flat=0;
p=L;
while(p)
{
if(p!=NULL)
{
if(strcmp(p->data.Num,Num)==0)
{
printf("学号: %s\n",p->data.Num);
printf("姓名