1,链表的操作:
1)创建链表CcreateLink) :从键盘输入n个学生的数据,每个学生信息都是链表中的一个节点,要求按照学号升序建立一个链表。此外,不可以输入学号字段相同的数据(每个学生的学号都是唯一的),若有重复则拒绝输入。
2)遍历链表(traverseLink) :输出链表中每个节点的学生信息,每行显示一个学生的信息,
要求要有表头(学号 姓名成绩)。(可以自己设定显示的格式, 尽量整齐、清晰)
3)查询学生信息(findNode) :给定个学生的学 号,输出学生的全部信息。
4)插入学生信息(insertNode) :从键盘输入个学生的信息,将这个节点插入到链表中的正确位置。(同前,学号不能重复,否则拒绝插入)。
5)删除学生信息节点(deleteNode) :从键盐输入学号,然后将该生的信息节点从链表中删除。6)修改学生信息(updateNode) :从键盘输入学号,然后询问修改姓名还是成绩,确认后将链表中该生的节点信息进行修改。
7)生成个链 表的逆链表(reversLink) :对符合要求1)的一个链表生成其逆序链表。
8*)合并两个链表(bindLink) :把按照要求1)生成的两个链表合并成一个符合要求1)的链表。如果有学号相同的两个节点,自己设定解决方案,在项目报告中加以说明。
Link.h
#ifndef _link_
#define _link_
#include "MYTYPE.H"
StuLink *createLink(StuLink *head);
StuLink *traverseLink(StuLink* head);
StuLink *findLink(StuLink *head,int ID);
StuLink *insertNode(StuLink *head);
StuLink *deleteNode(StuLink *head);
StuLink *updateNode(StuLink *head);
StuLink *reversLink(StuLink *head,StuLink *reverse);
#endif
#ifndef _MYTYPE_
#define _MYTYPE_
typedef struct student
{
int num;
char name[20];
float score;
}STUDENT;
typedef struct stuNode
{
STUDENT data;
struct stuNode *next;
}StuLink;
#endif
#include <stdio.h>
#include "link.h"
#include "MYTYPE.H"
int main()
{
int ID,x;
StuLink *head = NULL;
StuLink *reverse = NULL;
printf("1:CreateLink. \n");
printf("2:TraverseLink. \n");
printf("3:FindLink. \n");
printf("4:InsertNode. \n");
printf("5:DeleteNode. \n");
printf("6:UpdateNode. \n");
printf("7:ReversLink. \n");
printf("0:Exist\n");
printf("What do you want to do!\n");
A: scanf("%d",&x);
switch (x)
{
case 1:
head=createLink(head);
goto A;
case 2:
head = traverseLink(head);
goto A;
case 3:
printf("Input find ID:\n");
scanf("%d",&ID);
head =findLink(head,ID);
goto A;
case 4:
head = insertNode(head);
goto A;
case 5:
head=deleteNode(head);
goto A;
case 6:
head=updateNode(head);
goto A;
case 7:
reverse = reversLink(head,reverse);
goto A;
default:
exit(0);
break;
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>