首页 > 代码库 > 以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数

以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数

下面是单链表的数据结构

typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*Linklist;

1.以指针参数实现

void delete_x_1(LNode *head,ElemType x){//head为单链表头结点,删除结点的值为x
    LNode *l = head;
    LNode *p = head->next;
    while(p != null){
        if(p->data =http://www.mamicode.com/= x){>
这是最一般的方法,使用指针来实现。


2.以递归跟引用参数实现

void delete_x_2(Linklist &L,ElemType x){//为单链表头结点引用,删除结点的值为x
    LNode *p;
    if(L == null){
        return;
    }
    if(L->data =http://www.mamicode.com/= x){>有些人认为直接free掉p结点会造成断链,实际上因为L为引用,是直接对原链表进行操作,因此不会断链。