#include<stdio.h>
#include<stdlib.h>
#define NUM 10
//定义一个结构体,即顺序表
typedef struct{
char date[NUM];
int len;
}sxb;
//线性表的初始化 接受其返回值
sxb *create(){
sxb *s=(sxb *)malloc(sizeof(sxb));
s->len=0;
return s;
}
//往线性表中添加元素
void init(sxb *s){
s->date[0]='a';
s->len+=1;
s->date[1]='c';
s->len+=1;
s->date[2]='d';
s->len+=1;
}
//进行线性表的插入
int insert(sxb *s,int index,char c){
//先判断能否插入,两种情况
if(s->len>=NUM){
printf("线性表已满,无法插入!");
return 0;
}
if(index>s->len+1||index<1){
printf("插入的位置不合法,无法插入!");
return 0;
}
//开始插入,要移位
int j;
for(j=s->len;j>=index;j--){
s->date[j]=s->date[j-1];
}
s->date[index-1]=c;
s->len+=1;
return 1;
}
//进行线性表的删除(给定位置的删除)
int delate(sxb *s,int index){
//先判断能否删除
if(s->len==0){
printf("当前线性表为空,无法删除!");
return 0;
}
if(index<1&&index>s->len){
printf("给定删除的位置有误,无法删除!");
return 0;
}
//开始进行删除操作 找到位置然后删除
int k;
for(k=index;k<s->len;k++){
s->date[k-1]=s->date[k];
}
s->len--;
return 1;
}
//打印出线性表,以检查对错
int display(sxb *s){
int i;
for(i=0;i<s->len;i++){
printf("%c",s->date[i]);
}
}
int main(){
sxb *s=create();
//验证初始化是否正确
init(s);
printf("初始顺序表为:");
display(s);
printf("\n");
//验证插入结果
insert(s,2,'b');
printf("插入后的顺序表为");
display(s);
printf("\n");
//验证删除后的顺序表
delate(s,2);
printf("删除后的顺序表为:");
display(s);
}