作业:自定义顺序表,实现顺序表按照位置插入和删除功能
#include<myhead.h>
#define MAX 20
typedef struct
{
char name[20];
int score;
int age;
}stu;
typedef struct
{
stu data[MAX];
int len;
}list,*hlist;
void output(hlist p)
{
for(int i=0;i<p->len;i++)
{
printf("姓名: %s 分数: %d年龄: %d\n",p->data[i].name,p->data[i].score,p->data[i].age);
}
}
int main()
{
int pos,pos1,n=0;
stu t ={"wjl",100,22};
hlist p=malloc(sizeof(list));
p->len=0;
memset(p->data,0,sizeof(p->data));
printf("请输入学生个数:\n");
scanf("%d",&n);
for(int i =0;i<n;i++)
{
printf("请输入第%d个学生的信息:\n",i+1);
printf("请输入姓名: ");
scanf("%s",p->data[i].name);
printf("请输入分数: ");
scanf("%d",&p->data[i].score);
printf("请输入年龄: ");
scanf("%d",&p->data[i].age);
p->len++;
}
while(1)
{
printf("请输入要插入的位置:\n");
scanf("%d",&pos);
if(pos<1||pos>p->len+1||p->len==MAX||p==NULL)
{
printf("输入错误,请重新输入");
}
else
break;
}
for(int i=p->len-1;i>=pos-1;i--)
{
p->data[i+1]=p->data[i];
}
p->data[pos-1]=t;
p->len++;
output(p);
printf("请输入要删除的位置:");
scanf("%d",&pos1);
if(pos1<1||pos1>p->len)
{
printf("删除失败\n");
}
else
{
for(int i=pos1-1;i<p->len;i++)
{
p->data[i] = p->data[i+1];
}
p->len--;
}
output(p);
}