📄 sy2_1.c
字号:
/* sy2_1.c */
#include"sj.h" /*调用自定义的头文件*/
typedef struct std_info {
int Num;
char Name[8];
float Score;
}ElemType ;
typedef struct
{ElemType elem[MAXSIZE];
int length;
}SeqList; /*定义顺序存储结构*/
void Create_SeqList(SeqList *L) /*创建顺序表*/
{ int i,n,num;
char ss[8];
float score;
printf("请输入顺序表的长度:\n");
scanf("%d",&n);
L->length=n;
for(i=1;i<=n;i++) /*输入n个学生信息*/
{ printf("请输入一个学生的信息:Num,Name,Score:\n");
scanf("%d",&num);
getchar(); /*接收scanf语句最后的回车*/
gets(ss);
scanf("%f",&score);
L->elem[i].Num=num;
strcpy(L->elem[i].Name,ss);
L->elem[i].Score=score;
}
}/* Create_SeqList*/
void Print_SeqList(SeqList *L) /*输出顺序表*/
{ int i;
printf("顺序表的内容为:\n");
for(i=1;i<=L->length;i++) printf("num=%d,Name=%s,score=%f\n",L->elem[i].Num,L->elem[i].Name,L->elem[i].Score);
}/* Print_SeqList*/
Status Insert_SeqList(SeqList *L,int i,ElemType x)/*顺序表的插入操作*/
{ int j;
if(i<1||i>L->length+1)
return ERROR; /*判断非法插入位置*/
if (L->length==MAXSIZE-1) return OVERFLOW;
for(j=L->length;j>=i;j--)
L->elem[j+1]=L->elem[j];
L->elem[i]=x;
++L->length; /*插入成功,表长度加1*/
return OK;
}/* Insert_SeqList*/
Status Delete_SeqList(SeqList *L,int i) /*顺序表的删除操作*/
/*删除表中第i个元素,若表空或不存在指定元素,则返回ERROR*/
{ int j;
if(i<1 || i>L->length) /* 检查空表及删除位置的合法性*/
return ERROR ;
for(j=i;j<=L->length-1; j++)
L->elem[j]=L->elem[j+1]; /* 向上移动 */
L->length--;
return OK ; /* 删除成功 */
}/* Delete_SeqList*/
void Inversion_SeqList(SeqList *L) /*顺序表的逆置*/
{
int i,j;ElemType t;
for( i=1,j=L->length; i<j; i++)
{t= L->elem[i];
L->elem[i]=L->elem[L->length-i+1];
L->elem[L->length-i+1]=t;
}
}/* Inversion_SeqList */
void main()
{ int j=1,i,n,num;
char ss[8];
float score;
SeqList *L=(SeqList *)malloc(sizeof(SeqList));
ElemType x;
Create_SeqList(L);
Print_SeqList(L);
while(j) /*功能菜单*/
{ printf("顺序表操作! \n 请输入一个0到3的整数,选择您的操作\n");
printf("1: 顺序表插入\n");
printf("2: 顺序表删除\n");
printf("3: 顺序表逆置\n");
printf("0: 退出程序\n");
scanf("%d",&j);
switch(j)
{ case 0: printf("退出程序\n");exit(0);
case 1:/*首先要输入插入位置和待插入学生的信息*/
printf("请输入一个学生的信息(Num,Name,Score)和插入位置:\n");
scanf("%d",&num);
getchar();/*消除上一个scanf后的回车符号*/
gets(ss);
scanf("%f",&score);
scanf("%d",&i);
x.Num=num;
strcpy(x.Name,ss);
x.Score=score;
i=Insert_SeqList(L,i,x);
if(!i)
printf ("插入位置错误!\n");
else
Print_SeqList(L); break;
case 2: printf("请输入要删除的学生信息在顺序表中的位置(整数)\n");
scanf("%d",&i);
i=Delete_SeqList(L,i);/*输入删除位置*/
if(!i)
printf("删除位置输入错误!\n");
else
Print_SeqList(L); break;
case 3: Inversion_SeqList(L);
Print_SeqList(L); break;
default: printf("输入错误,请重新输入!\n");
}
}/* while */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -