链表中的添加节点和删除节点的操作

struct ListNode{
    int value;
    ListNode *next;
};
void add_listnode(ListNode** start,int value){
    ListNode *addnode=new ListNode();
    addnode->value=value;
    addnode->next=NULL;
    if(*start==NULL){
        *start=addnode;
    }
    else{
        ListNode* temp;
        temp=*start;
        while(temp->next!=NULL){
            temp=temp->next;
        }
        temp->next=addnode;
    }
}
void delete_listnode(ListNode** start,int value){
    if(*start==NULL||start==NULL)return ;
    ListNode* temp_listnode=NULL;
    ListNode* delete_listnode=NULL;
    if((*start)->value==value){
        delete_listnode=(*start);
        *start=(*start)->next;
    }
    else {
        temp_listnode=*start;
        while(temp_listnode->next!=NULL){
            if(temp_listnode->next->value==value){
                break;
            }
            temp_listnode=temp_listnode->next;
        }
    }
              if(temp_listnode->next!=NULL&&temp_listnode->next->value==value){
                  delete_listnode=temp_listnode->next;
                  temp_listnode=temp_listnode->next->next;
              }
    if(delete_listnode!=NULL){
        delete delete_listnode;//删除指针指向的内存后,该指针变成悬垂指针,指向曾经指向的内存地址,但是那个内存地址已经不存在了,为了防止错误,
        delete_listnode=NULL;//需要将该指针设置为NULL。
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值