4月15号作业

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值