main.c
#include"student.h"
int main()
{
seqListPtr S = seq_creat(); //创建
seq_add(S,"aaa",11,22); //学生信息增加
seq_add(S,"bbb",22,22);
seq_add(S,"ccc",33,22);
seq_add(S,"ddd",44,22);
show(S);
seq_input(S,2,"wei",1,1); //插入
show(S);
seq_del(S,3); //删除
show(S);
return 0;
}
student.h
#ifndef _SEQUENCE_H_
#define _SEQUENCE_H_
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 32
typedef struct student //定义学生数据类型
{
char name[32];
int age;
int id;
}stu;
typedef struct sequence //定义顺序表
{
stu data[MAX];
int len;
}seqList,*seqListPtr;
//创建顺序表的函数声明
seqListPtr seq_creat();
//判空函数声明
int empty(seqListPtr p);
//判满函数声明
int full(seqListPtr p);
//顺序表的增加
int seq_add(seqListPtr p,char *d1,int d2,int d3);
//顺序表的遍历
void show(seqListPtr p);
int seq_input(seqListPtr p,int n,char *d1,int d2,int d3);
int seq_del(seqListPtr p,int n);
#endif
student.c
#include"student.h"
//创建顺序表的函数
seqListPtr seq_creat()
{
seqListPtr S = (seqListPtr)malloc(sizeof(seqList));
if(NULL == S)
{
printf("创建失败!\n");
return NULL;
}
S->len = 0;
memset(S->data,0,sizeof(S->data));
printf("创建成功\n");
return S;
}
//判空函数
int empty(seqListPtr p)
{
if(NULL==p)
{
printf("判空失败哦\n");
return -1;
}
return p->len == 0;
}
//判满函数
int full(seqListPtr p)
{
if(NULL==p)
{
printf("判满失败哦\n");
return -1;
}
return p->len == MAX;
}
//顺序表的增加
int seq_add(seqListPtr p,char *d1,int d2,int d3)
{
if(NULL==p||full(p))
{
printf("增加失败哦\n");
return 0;
}
strcpy(p->data[p->len].name, d1);
p->data[p->len].age=d2;
p->data[p->len].id=d3;
p->len++;
return 1;
}
//顺序表的遍历
void show(seqListPtr p)
{
if(NULL==p||empty(p))
{
printf("error\n");
return;
}
else
{
for(int i=0;i<p->len;i++)
{
printf("%s\t%d\t%d\n ",p->data[i].name,p->data[i].age,p->data[i].id);
}
printf("\n");
}
}
//任意位置插入数据
//n---->位置 //下标n-1
int seq_input(seqListPtr p,int n,char *d1,int d2,int d3)
{
if(NULL==p || full(p) || n<=0 || n>MAX || n>p->len)
{
printf("error\n");
return 0;
}
for(int i=0;i<p->len-n+1;i++)
{
p->data[p->len-i]=p->data[p->len-i-1];
}
strcpy(p->data[n-1].name, d1);
p->data[n-1].age=d2;
p->data[n-1].id=d3;
p->len++;
return 1;
}
//del
int seq_del(seqListPtr p,int n)
{
if(NULL==p||n<=0||n>MAX||n>p->len)
{
printf("del error\n");
return 0;
}
for(int i=0;i<p->len-n+1;i++)
{
p->data[n-1+i]=p->data[n+i];
}
p->len--;
}
结果: