#include//个人信息结构体,各科成绩可自定义添加
typedef struct grade_msg
{
char name[16];
char sex;
int chinese;
int math;
int english;
}grade_msg_t;
//链表结构体
typedef struct student_msg
{
grade_msg_t msg;
struct student_msg * next;
}student_msg_t;
//创建链表头
student_msg_t * create_slist_head()
{
student_msg_t * head;
//申请空间
head = (student_msg_t *)malloc(sizeof(student_msg_t));
if(head == NULL)
{
printf("create slist head fail\n");
return NULL;
}
//初始化
head->next = NULL;
return head;
}
//判断链表中有无数据
//返回1为空,0为非空
int isnull(student_msg_t * head)
{
if(head->next == NULL)
return 1;
else
return 0;
}
//链表头添加数据
int insert_data(student_msg_t * head,grade_msg_t * msg)
{
printf("enter insert msg\n");
student_msg_t * new_node;
new_node = (student_msg_t * )malloc(sizeof(student_msg_t));
if(new_node == NULL)
{
printf("insert,create space fail\n");
return -1;
}
strcpy(new_node->msg.name,msg->name);
new_node->msg.sex = msg->sex;
new_node->msg.chinese = msg->chinese;
new_node->msg.math = msg->math;
new_node->msg.english = msg->english;
new_node->next = head->next;
head->next = new_node;
return 0;
}
//链表尾部删除数据
int delete_data(student_msg_t * head,grade_msg_t * msg)
{
return 0;
}
//打印所有信息
int printf_list(student_msg_t * head)
{
if(isnull(head))
{
printf("no student msg\n");
return -1;
}
while(head->next != NULL)
{
head = head->next;
printf("name:%s,sex:%c,chinese:%d,math:%d,english:%d\n",head->msg.name,head->msg.sex,head->msg.chinese,head->msg.math,head->msg.english);
}
return 0;
}
//修改数据
int modify_data(student_msg_t * head,char * data,int index)
{
return 0;
}
int main(int argc, const char *argv[])
{
student_msg_t * msg_head;
msg_head = create_slist_head();
if(msg_head == NULL)
{
printf("create student msg head fail\n ");
return -1;
}
while(1)
{
//姓名 字符串, 性别 字符类型, 语数英 整型
printf("please input 姓名[enter] 性别[enter] 语文[enter] 数学[enter] 英语[enter]\n");
grade_msg_t insert_msg;
printf("------------input start------------\n");
scanf("%s",insert_msg.name);
getchar();
scanf("%c",&insert_msg.sex);
getchar();
scanf("%d",&insert_msg.chinese);
getchar();
scanf("%d",&insert_msg.math);
getchar();
scanf("%d",&insert_msg.english);
getchar();
printf("------------input end------------\n");
insert_data(msg_head,&insert_msg);
printf("==========printf start==========\n");
if(msg_head -> next != NULL)
printf_list(msg_head);
printf("==========printf end=========\n");
}
return 0;
}