生活随笔
收集整理的這篇文章主要介紹了
删除list中的一个节点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、刪除list中的一個節點,給定位置為i
typedef struct _list_t
{ struct _list_t *next; int data;
}list; void delete_node(list *head, int i)
{list *p = head, *q = NULL;int j = 0;if ((NULL == head) || (0 >= i)){return ;}while ((NULL != p) && (j < i-1)){j++;p = p->next;}if ((NULL != p) && (NULL != p->next)){q = p->next;p->next=q->next;free(q);q = NULL;}
}
2、給定元素key,根據key來刪除對應的節點
#include<iostream>?? using?namespace?std;?? typedef?struct?node?? {?? ????int?number;?? ????struct?node?*next;?? }Node;?? Node?*Delete(Node?*head,int?key)?? {?? ????Node?*node1=head;?? ????Node?*node2=NULL;?? ????if?(head==NULL)?? ????{?? ????????return?NULL;?? ????}??? ????else?? ????{?? ????????if?(node1->number==key)?? ????????{?? ????????????head=head->next;?? ????????????free(node1);?? ????????????return?head;?? ????????}??? ????????else?? ????????{?? ????????????while?(node1!=NULL)?? ????????????{?? ????????????????node2=node1;?? ????????????????node2=node2->next;?? ????????????????if?(node2->number==key)?? ????????????????{?? ????????????????????node1->next=node2->next;?? ????????????????????free(node2);?? ????????????????????break;?? ????????????????}?? ????????????????node1=node1->next;?? ????????????}?? ????????????return?head;?? ????????}?? ????}?? }?
總結
以上是生活随笔為你收集整理的删除list中的一个节点的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。