回复 10楼 TonyDeng
- -我现学了,改完了...可还是有错啊...运行不出来
#include<stdio.h>
#define MAXSIZE 100
typedef struct student
{
int num;
char name[64];
float score;
int data[MAXSIZE];
struct student *Next;
}student,*Pstudent;
typedef struct seqlist
{
int length;
int data[MAXSIZE];
}seqlist,*PSeqList;
PSeqList Init_SeqList( )
{
PSeqList PL;
PL=(PSeqList)malloc(sizeof(SeqList));
if (PL)
PL->length=0;
return (PL);
}
void Destroy_SeqList(PSeqList *PL)
{
if (*PL)
free (*PL) ;
*PL=NULL;
return ;
}
int Length_SeqList(PSeqList PL)
{
if (PL)
return (PL->length) ;
return (-1);
}
int Location_SeqList (PSeqList PL, int x)
{
int i=0;
if (!PL)
{
printf("不存在,不能检查");
return(-1);
}
while (i<PL->length&& PL->data[i]!= x)
i++;
if (i>=PL->length)
return 0;
else
return (i+1);
}
int Insert_SeqList(PSeqList PL,int i,int x)
{
int j;
if (!PL)
{
printf("表不存在");
return (-2);
}
if (PL->length>= MAXSIZE)
{
printf("空间已满");
return(-1);
}
if(i<1 || i>PL->length+1)
{
printf("插入位置不合法");
return (0);
}
for(j= PL->length-1;j>=i-1;j--)
PL->data[j+1]= PL->data[j];
PL->data[i-1]=x;
PL->length++;
return (1);
}
int Delete_SeqList(PSeqList PL,int i)
{
int j;
if (!PL)
{
printf("不存在,不能删除元素");
return(-1);
}
if(i<1 || i> PL->length)
{
printf("删除位置不合法");
return(0);
}
for(j=i; j<PL->length; j++)
PL->data[j-1]= PL->data[j];
PL->length--;
return (1);
}
void Print_Choice()
{
printf("请输入你要进行的操作:\n");
printf("1.插入信息\n");
printf("2.删除信息:\n");
printf("3.查找信息:\n");
printf("4.更改信息:\n");
printf("5.退出:\n");
return;
}
void Print_SeqList(PSeqList PL)
{
printf("\图表如下:");
int i=0;
for(i=0;i<PL->length;i++)
{
printf("学生学号:%d\n学生姓名:%s\n学生成绩:%f\n",PL->student[i].num,PL->student[i].name,PL->student[i].score);
}
printf("\n");
}
void Insert(PSeqList PL)
{
int i;
int num;
char name[20];
float score;
printf("请输入要插入的位置:\n");
scanf("%d",&i);
printf("请输入学生的学号:\n");
scanf("%d",&num);
printf("请输入学生的姓名:\n");
scanf("%s",&name);
printf("请输入学生的成绩:\n");
scanf("%f",&score);
}
Insert_SeqList(PL,i,x);
Print_SeqList(PL);
}
void Delete(PSeqList PL)
{
int i;
printf("请输入删除的位置:");
scanf("%d",&i);
Delete_SeqList(PL,i);
Print_SeqList(PL);
}
void Locate(PSeqList PL)
{
int Locate(pl);
printf("请输入想查找的学生信息:");
datatype x;
scanf("%d",&x);
int i=Location_SeqList(PL,x);
if(i>0)
{
printf("该学生在%d中",i);
printf("请输入你要查找的学生信息:\n学生学号:%d\n学生姓名:%s\n学生成绩:%f\n",PL->student[i].num,PL->student[i].name,PL->student[i].score)
}
else if(i==0)
printf("未查到");
else("erro")
Print_SeqList(PL);
}
int Renew(PseqList PL)
{
int x,choice,num,score;
char name[20];
printf("请输入想更改的学生信息:");
scanf("%d",&x);
int i=Location_SeqList(PL,x);
if(i>0)
printf("请输入你要更改的学生信息:\n学生学号:%d\n学生姓名:%s\n学生成绩:%f\n",PL->student[i].num,PL->student[i].name,PL->student[i].score)
printf("请选择更改项目");
printf("更改学号");
printf("更改名字");
printf("更改成绩");
printf("返回");
scanf("%d",&choice);
while(1)
{
switch(choice)
{
case 1:
printf("请输入新的学号:\n");
scanf("%d",&num);
PL->student[i-1].num=num;
return 0;
case 2:
printf("请输入新的姓名:\n");
scanf("%s",name);
strcpy(PL->student[i-1].name=name);
return 0;
case 3:
printf("请输入新的成绩:\n");
scanf("%f",&score);
PL->student[i-1].score=score;
case 4:
return 0;
default:
printf("输入错误,请重新输入");
break;
}
}
}
int main()
{
PseqList student=Init_SeqList();
int choice;
while(1)
{
Print_SeqList(student);
Print_Choice();
scanf("%d",&choice);
switch(choice)
{
case 1:
Insert(student);
break;
case 2:
Delete(student);
break;
case 3:
Locate(student);
break;
case 4:
Renew(student);
break;
case 5:
Destroy_SeqList(&student);
return 0;
default:
printf("输入错误,请重新输入");
break
}
}
}