数据结构 day5

1.双向链表按位置删除

int site_dele(double_linklist* list,int n)
{
    if(list==NULL || list->len==0 || n<1 || n>(list->len))
    {
        if(list==NULL)
{
       printf("删除失败\n");

}       
 else if(list->len==0) 
{
printf("删除失败>>链表元素为空\r\n");
}
        else printf("删除失败>>非法位置\r\n");
        return -1;
    }
    int i=0;
    double_linklist* p = list;
    for(i=0;i<n;i++) p=p->next;

    if(p->next!=NULL) p->next->prev=p->prev;
    p->prev->next=p->next;

    printf("删除元素为 %c\n",p->data);
    free(p);
    p=NULL;
    list->len--;
}

2.双向链表按位置修改

int site_modify(double_linklist* list,int n,char num)
{
    if(list==NULL || list->len==0 || n<1 || n>(list->len))
    {
        if(list==NULL)
{
printf("查找失败\n");
}
        else if(list->len==0) 
{
printf("链表元素为空\n");
}
        else printf("查找失败\n");
        return -1;
    }
    double_linklist* p=list;
    int i=0;
    for (i=0;i<n;i++)
    {
        p=p->next;
    }
    p->data= num;
    printf("修改成功\r\n");
    return 0;
}

3.双向链表按位置查找

int  site_find(double_linklist*list,char pos )
if(list==NULL ||  pos<1 || pos>len)
{
return -1;
}
{
    double_linklist  *p=list;
    for(int i=0;i<pos;i++)
    {
        p=p->next;
    }
    printf("%c\n",p->data);
    return  p->data;
}

4.双向循环链表头插

int insert_head(loop_double_link L,datatype e)
{
    //1,判断是否创建
    if(L==NULL)
    {
    return -1;
    }
    //2,插入s
loop_double_link s=create(0);
    if(s==NULL)
    {
    return -1;
    }
s->data=e;
s->next=L->next;
s->prev=L;
    L->next->prev=s;
    L->next=s;
    L->len++;
    return 0;
}

5.双向循环链表尾插

int insert_rear(loop_double_link L,datatype e)
{
    //1,判断是否创建
    if(L==NULL)
    {
    return -1;
    }
    //2,插入s
loop_double_link s=create(0);
    if(s==NULL)
    {
    return -1;
    }
loop_double_link *p=L->prev;
s->data=e;
s->next=p->next;
s->prev=p;
    p->next->prev=s;
    p->next=s;
    L->len++;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值