#ifndef _LINK_H_
#define _LINK_H_
typedef struct
{
int id;
char name[20];
double score;
}student;
typedef struct Node
{
union
{
student data;
int len;
};
struct Node*next;
}Link;
//创建
Link*create();
//判空
int empty(Link*l);
//申请节点
Link*nodebuy(student s);
//头插
int insert_head(Link*l,student s);
//遍历
void show(Link*l);
//按值查询,返回位置
int search_value(Link*l,char* name);
//菜单
void menu();
//输入数据
student put();
//排序
void sort(Link*l);
//按姓名删除
void delvalue(Link*l,char* name);
//按姓名查询信息
void search_name(Link*l,char*name);
//退出
void end();
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "link.h"
//创建
Link*create()
{
student s={0,0,0};
Link*l=(Link*)malloc(sizeof(Link));
if(l==NULL)
{
printf("创建失败\n");
return NULL;
}
l->len=0;
l->next=NULL;
printf("创建成功\n");
return l;
}
//判空
int empty(Link*l)
{
return l->next==NULL ? 1:0;
}
//申请节点
Link*nodebuy(student s)
{
Link*p=(Link*)malloc(sizeof(Link));
if(p==NULL)
{
printf("申请失败\n");
return NULL;
}
p->data=s;
p->next=NULL;
return p;
}
//头插
int insert_head(Link*l,student s)
{
if(NULL==l)
{
printf("插入失败\n");
return -1;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "link.h"
int main(int argc, const char *argv[])
{
int x;
student s;
char name[20];
Link*l=create();
if(l==NULL)
return -1;
while(1)
{
menu();
printf("请选择功能:");
scanf("%d",&x);
switch(x)
{
case 1:
while(1)
{
printf("输入#停止输入数据\n");
s=put();
if(strcmp(s.name,"#")==0)
break;
insert_head(l,s);
}
break;
case 2:
show(l);
break;
case 3:
sort(l);
show(l);
break;
case 4:
printf("输入要删除学生姓名:");
scanf("%s",name);
delvalue(l,name);
break;
case 5:
printf("输入要查询学生姓名:");
scanf("%s",name);
search_name(l,name);
break;
case 6:
end();
break;
default:
printf("错误,请重行输入\n");
break;
}
}
return 0;
}