#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN sizeof(struct Student)
struct Student
{
int nNum;
float fScore;
struct Student *next; //保存一个 Student类型结构的地址
};
struct Student *addStu (struct Student *); //函数原型
void displayStu (struct Student*);
struct Student *deleteStu (struct Student *);
int main()
{
int num;
struct Student *stuList = NULL;
struct Student *first ; //创建一个指向结构的指针
while(1)
{
printf("1.Add Student Information\n");
printf("2.Display Student Information\n");
printf("3.Delete Student Information\n");
printf("0.Exit\n");
printf("Please input menu item:");
scanf("%d",&num);
if(num == 1)
stuList = addStu(stuList);
if(num == 2)
displayStu(stuList);
if(num == 3)
stuList = deleteStu(stuList);
if(num == 0)
return 0;
}
}
struct Student *addStu (struct Student *head)
{
struct Student *phead;
struct Student *p;
phead = head;
p = (struct Student*) malloc(LEN);
printf("Add Student Information\n");
puts("Please input student ID:");
scanf("%d", &p->nNum);
puts("Please input grade:");
scanf("%f", &p->fScore);
printf("Succeed!\n\n");
if (head == NULL)
{
head = p;
p->next = NULL;
phead = head; //head为第一个节点
}
else
{
while (head->next != NULL)
{
head = head->next;
}
head->next = p;
head->next->next = NULL;
}
return phead;
}
void displayStu(struct Student *head)
{
struct Student *p;
p = head;
printf("Student ID Grade \n");
while (p != NULL)
{
printf("%-10d%10.1f\n", p->nNum, p->fScore);
p = p->next; //获取下一个节点
}
printf("\n");
}
struct Student *deleteStu (struct Student *head)
{
struct Student *pCur, *pPre;
struct Student *p;
pCur = (struct Student*) malloc(LEN);
pPre = (struct Student*) malloc(LEN);
p = (struct Student*) malloc(LEN);
puts("Please input student ID:");
scanf("%d", &p->nNum);
pCur = head;
if (pCur == NULL)
{
printf("NULL!\n");
printf("\n");
return NULL;
}
while (pCur != NULL &&p->nNum != pCur->nNum)
{
pPre = pCur;
pCur = pCur->next;
}
if (pCur != NULL)
{
if (pCur == head)
{
head = pCur->next;
}
else
{
pPre->next = pCur->next;
}
free(pCur);
printf("Succeed!\n\n");
}
else
{
printf("This student ID dose not exist.!\n");
printf("\n");
}
return head;
}