作业
自定义顺序表,实现顺序表按照位置插入和删除功能(上传到作业连接)。
mymain.c
#include<myhead.h>
#include "list.h"
int main(int argc, const char *argv[])
{
//申请堆区空间返回地址
Plist L=apply_area();//调用申请空间函数
//循环输入n个学生信息
input_stu(L,4);
//循环输出n个学生信息
output_stu(L);
//按照位置删除一个学生
dele_pos(L);
output_stu(L);
//按照位置插入一个学生
insert_pos(L);
output_stu(L);
free(L);
L==NULL;
return 0;
}
list.c
#include "list.h"
Plist apply_area()
{
Plist p=malloc(sizeof(List));//申请空间
if(p==NULL)
{
printf("malloc fail\n");
return NULL;
}
p->len=0;//长度初始化为0
memset(p->data,0,sizeof(p->data));//清空缓冲区
return p;//返回地址给主函数
}
void input_stu(Plist L,int n)
{
printf("请输入学生信息:\n");
int i=0;
for(i=0;i<n;i++)
{
printf("请输入第%d个学生信息:\n",i+1);
printf("请输入年龄:");
scanf("%d",&L->data[i].age);
printf("请输入姓名:");
scanf("%s",L->data[i].name);
printf("请输入成绩:");
scanf("%d",&L->data[i].score);
L->len++;//计数器+1
}
}
void output_stu(Plist L)
{
printf("学生信息如下:\n");
printf("年龄\t姓名\t成绩\n");
int i=0;
for(i=0;i<L->len;i++)
{
printf("%d\t%s\t%d\n",L->data[i].age,L->data[i].name,L->data[i].score);
}
}
int empty(Plist L,int pos)
{
if(NULL==L ||pos<1 || pos>L->len ||L->len==0)
{
return 1;//返回真
}
return 0;//返回假
}
void dele_pos(Plist L)
{
my_int pos=0;
printf("请输入要删除的位置:");
scanf("%d",&pos);
int i=0,sub=-1;
if(empty(L,pos))
{
printf("删除失败\n");
}
else
{
int i=0;
for(i=pos-1;i<L->len;i++)
{
L->data[i]=L->data[i+1];
}
L->len--;
}
}
void insert_pos(Plist L)
{
my_int pos=0;
stu e={19,"张若仪",100};//要插入的学生信息
printf("请输入要插入的位置:");
scanf("%d",&pos);
if(pos<1 || pos>L->len+1 || L->len==MAX || L==NULL)
{
printf("插入失败\n");
}
else
{
int i=0;
for(i=L->len-1;i>=pos-1;i--)
{
L->data[i+1]=L->data[i];
}
L->data[pos-1]=e;//将张若仪插入到表中
L->len++;
}
}
list.h
#ifndef _LIST_H_
#define _LIST_H_
#define MAX 30//宏定义最大存储容量
#include <myhead.h>
typedef int my_int;
typedef char STR[20];
typedef struct
{
my_int age;//年龄
STR name;//姓名
my_int score;//成绩
}stu;//学生信息结构体
typedef struct
{
stu data[MAX];//最大存储容量
int len;//计数器,统计学生数量
}List,*Plist;
//定义结构体普通类型List和指针类型Plist
Plist apply_area();
void input_stu(Plist L,int n);
void output_stu(Plist L);
void dele_pos(Plist L);
void insert_pos(Plist L);
#endif
运行结果: