下面是单链表的数据结构
typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*Linklist;
void delete_x_1(LNode *head,ElemType x){//head为单链表头结点,删除结点的值为x LNode *l = head; LNode *p = head->next; while(p != null){ if(p->data == x){ l->next = p->next; free(p); } l = p; p = p->next; } }
2.以递归跟引用参数实现
void delete_x_2(Linklist &L,ElemType x){//为单链表头结点引用,删除结点的值为x LNode *p; if(L == null){ return; } if(L->data == x){ p = L; L = L->next; free(p); delete_x_2(L,x); }else{ delete_x_2(L->next,x); } }有些人认为直接free掉p结点会造成断链,实际上因为L为引用,是直接对原链表进行操作,因此不会断链。
以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数,布布扣,bubuko.com
以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数
原文地址:http://blog.csdn.net/idiotxl_1020/article/details/24578671