c语言利用链表删除学生成绩,C语言新手求高手看看我的链表做的学生管理系统,删除部分哪里......

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10

#define OK 1

#define ERROR 0

#define OVERFLOW -2

#define MAXLEN 12

typedef int Status;

typedef struct

{

char num[MAXLEN];

char name[MAXLEN];

int chinese;

int math;

int english;

int ave;

}ElemType;

typedef struct

{

ElemType *elem;

int length;

int listsize;

}SqList;

Status ListInit(SqList *L)

{

L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!L->elem)exit(OVERFLOW);

L->length=0;

L->listsize=LIST_INIT_SIZE;

return OK;

}

Status ListDelete(SqList *L,int i)

{

int *p,*q;

if(i<1||i>L->length)

return ERROR;

p=&(L->elem[i]);

q=&L->elem[L->length];

for(p++;p<=q;p++)

*(p-1)=*p;

-L->length;

return OK;

}

Status ListInsert(SqList *L,int pos,ElemType e)

{

ElemType *p,*q;

if(pos<1||pos>L->length+1)

return ERROR;

p=&L->elem[L->length-1];

q=&L->elem[pos-1];

for(;p>=q;--p)

*(p+1)=*p;

*q=e;

++L->length;

return OK;

}

void Print(SqList L)

{

int i;

for(i=0;i

{

printf("学号:%s",L.elem[i].num);

printf("姓名:%s",L.elem[i].name);

printf("语文成绩:%d",L.elem[i].chinese);

printf("数学成绩:%d",L.elem[i].math);

printf("英语成绩:%d",L.elem[i].english);

printf("平均成绩:%d",(L.elem[i].english+L.elem[i].chinese+L.elem[i].math)/3);

printf("\n");

}

}

void ReadIn(ElemType *e)

{

printf("输入学号:");

scanf("%s",e->num);

printf("输入姓名:");

scanf("%s",e->name);

printf("输入语文成绩:");

scanf("%d",&e->chinese);

printf("输入数学成绩:");

scanf("%d",&e->math);

printf("输入英语成绩:");

scanf("%d",&e->english);

}

void main()

{

SqList L;

int key,len,k;

ElemType e;

ListInit(&L);

do{

printf("(1):录入成绩\n");

printf("(2):显示所有成绩\n");

printf("(3):删除学生成绩\n");

printf("(4):退出\n");

scanf("%d",&key);

switch(key)

{

case 1 :ReadIn(&e);

len=L.length;

ListInsert(&L,++len,e);

break;

case 2 :Print(L);break;

case 3 :pritnf("请输出要删除的学号:");

scanf("%d",&k);

ListDelete(&L,k);break;

case 4:exit(0);

default:printf("Error\n");break;

}

}while(1);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值