pList.h
struct PList
{
char name[10];
char stuId[8];
short resoult;
struct pList *next;
};
creat.c
#include "stdio.h"
#include "pList.h"
#include "stdlib.h"
extern int count;
struct PList *creat(struct PList * head)
{
struct PList *pc,*pf;
char yn='y';
do
{
pc = (struct PList *)malloc(sizeof(struct PList ));
if(pc == NULL)
{
printf("/tLIST CREAD FAILED!!!!");
return NULL;
}
printf("/t请输入学生姓名:");
fflush(stdin);
scanf("%s",pc->name);
printf("/t请输入学生学号:");
fflush(stdin);
scanf("%s",pc->stuId);
printf("/t请输入学生成绩:");
fflush(stdin);
scanf("%d",&pc->resoult);
if(count == 0)
pf = head =pc;
else pf->next = pc ;
count++;
pc->next = NULL;
pf = pc;
printf("/t是否还要录入学生:");
fflush(stdin);
scanf("%c",&yn);
}while(toupper(yn) !='N');
return head;
}
del.c
#include "stdio.h"
#include "pList.h"
#include "string.h"
#include"stdlib.h"
extern count;
struct PList *del(struct PList *head)
{
struct PList * pc,*back;
char sId[8];
if(head == NULL)
{
printf("/nTLIST IS NULL, DELETE FAILED!!/n");
return NULL;
}
printf("/n请输入你要删除的学号:");
scanf("%s",sId);
if(strcmp(head->stuId,sId)==0)
{
pc=head->next;
free(head);
count--;
return pc;
}
pc = head;
back = pc;
pc = pc->next;
while(pc != NULL)
{
if(strcmp(pc->stuId,sId)==0)
{
back->next=pc->next;
free(pc);
count--;
return head;
}
back = pc;
pc= pc->next;
}
return head;
printf("/tNO RECORDE!!!");
}
disp.c
#include "stdio.h"
#include "pList.h"
extern int count;
void disp(struct PList * head)
{
struct PList * pc;
short total=0;
if(head == NULL)
{
printf("/n/tLIST IS EMPTY!!!/n");
}
else
{
pc = head;
printf("/t姓名/t学号/t成绩/n");
while(pc != NULL)
{
printf("/t%s/t%s/t%d/n",pc->name,pc->stuId,pc->resoult);
total = total+pc->resoult;
pc = pc->next;
}
printf("/n/t共%d个学生/t总成绩%d分/t平均成绩:%1.2f分/n",count,total,(float)total/count);
}
}
insert.c
#include "stdio.h"
#include "pList.h"
#include "stdlib.h"
#include "string.h"
extern int count;
struct PList *insert(struct PList * head)
{
struct PList *back,*pc,*pi;
char sId[8];
pi = (struct PList * )malloc(sizeof(struct PList));
if(pi == NULL)
{
printf("/tINSERT FAILED!!");
return NULL;
}
printf("/t请输入学生姓名:");
fflush(stdin);
scanf("%s",pi->name);
printf("/t请输入学生学号:");
fflush(stdin);
scanf("%s",pi->stuId);
printf("/t请输入学生成绩:");
fflush(stdin);
scanf("%d",&pi->resoult);
if(head == NULL)
{
head = pi;
head->next = NULL;
count++;
return head;
}
printf("/t你要插入谁的后面(学号):");
scanf("%s",sId);
pc = head;
while (pc != NULL)
{
if(strcmp(pc->stuId,sId)==0)
{
pi->next = pc->next;
pc->next = pi;
count++;
return head;
}
back = pc;
pc=pc->next;
}
back->next=pi;
pi->next=NULL;
count++;
return head;
}
modif.c
#include "stdio.h"
#include "pList.h"
#include "string.h"
void modif(struct PList * head)
{
struct PList *pc;
char sId[8];
short mresoult;
if(head == NULL)
{
printf("/n/tLIST IS EMPTY, MODIF FAILED!!/n");
}
else
{
printf("/n/t请输入要修改的学生学号:");
fflush(stdin);
scanf("%s",sId);
pc = head;
while(pc != NULL)
{
if(strcmp(pc->stuId,sId)==0)
{
printf("/n/t修改前:/n");
printf("/t姓名/t学号/t成绩/n");
printf("/t%s/t%s/t%d/n",pc->name,pc->stuId,pc->resoult);
printf("/t请输入新成绩:");
scanf("%d",&mresoult);
pc->resoult=mresoult;
printf("/n/t修改后:/n");
printf("/t姓名/t学号/t成绩/n");
printf("/t%s/t%s/t%d/n",pc->name,pc->stuId,pc->resoult);
break;
}
pc=pc->next;
}
if(pc == NULL)
printf("/t没有你要的学号!!!/n");
}
}
LinkList.c
#include "stdio.h"
#include "pList.h"
int count=0;
struct PList *creat(struct PList * head);
void disp(struct PList * head);
struct PList * insert(struct PList * head);
void modif(struct PList * head);
struct PList * del(struct PList *head);
void main()
{
struct PList *head=NULL;
char yn = 'y' ;
short choice;
do
{
printf("/n===========================/n");
printf("/n/t1.创建/n");
printf("/t2.浏览/n");
printf("/t3.插入/n");
printf("/t4.修改成绩/n");
printf("/t5.删除/n");
printf("/t6.退出/n/n");
printf("/n===========================/n");
printf("/t请输入你要的操作:");
scanf("%d",&choice);
if(choice < 1 || choice >6 )
{
printf("/t没有你要的选择,请重新选择!!/n");
}
else
{
switch(choice)
{
case 1:
head=creat(head);
break;
case 2:
disp(head);
break;
case 3:
head=insert(head);
break;
case 4:
modif(head);
break;
case 5:
head=del(head);
break;
case 6:
yn = 'n';
}
}
}while(yn == 'y');
}
本文介绍了一个简单的链表管理系统,包括创建、浏览、插入、修改和删除等基本操作。通过具体的C语言代码示例,展示了如何实现这些功能。
1497

被折叠的 条评论
为什么被折叠?



