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。
}
}
链表中的添加节点和删除节点的操作
最新推荐文章于 2024-06-27 01:20:56 发布