1,思维导图
2,实现头删,清空顺序表,按位置插入,释放顺序表;
#include "lian.h"
sq_p create_sq()
{
sq_p H = (sq_p)malloc(sizeof(lian));
if(H==0)
{
printf("空间申请失败\n");
return NULL;
}
H->len =0;
bzero(H->data,sizeof(H->data));
return H;
}
int pan_kong(sq_p H)
{
if(H==NULL)
{
printf("入参为空\n");
return -1;
}
return H->len==0?1:0;
}
int pan_man(sq_p H)
{
if(H==NULL)
{
printf("入参为空");
return -1;
}
return H->len==MAX?1:0;
}
void to_cha(sq_p H,datadype data)
{
if(H==NULL)
{
printf("入参为空\n");
return;
}
if(pan_man(H))
{
printf("表已满,不能插入\n");
return;
}
for(int i=H->len-1;i<=0;i++)
{
H->data[i+1]=H->data[i];
}
H->data[0]=data;
H->len++;
}
void sucu_lian(sq_p H)
{
if(H==NULL)
{
printf("入参是否为空\n");
return;
}
if(pan_kong(H))
{
printf("表为空,无需输出\n");
return;
}
for(int i=0;i<H->len;i++)
{
printf("%d\n",H->data[i]);
}
}
//头删
void dele_head(sq_p H)
{
if(L==NULL)
{
printf("入参为空,请检查\n");
return;
}
if(pan_kong(H))
{
printf("表为空,无需删除\n");
return;
}
for(int i=1;i<H->len;i++)
{
H->data[i-1]=H->data[i];
}
H->len--;
}
// 清空顺序表
void clean_seq(sq_p H)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
H->len=0;
}
//按位置插入
void insert_pos(sq_p H,datatype data,int pos)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
if(pos<0||pos>H->len)
{
printf("位置不合理\n");
return;
}
if(pan_man(H))
{
printf("表已满\n");
return;
}
for(int i=H->len-1;i>=pos;i--)
{
H->data[i+1]=H-data[i];
}
H->data[pos}=data;
H->len--;
}
//释放顺序表
void free_sq(sq_p *H)
{
if(H==NULL||*H==NULL)
{
printf("入参为空,请检查\n");
return;
}
clean_seq(*H);
free(*H);
*H=NULL;
}