何大土  

目录:

问题一:递归删除一个不带头结点的单链表L中的所有值为x的结点 

问题二:反向输出单链表中节点的值

问题三 :删除单链表中最小值的节点

问题四 :删除值介于 a b之间的节点

问题五 :找出两个链表的公共节点

 

//问题一:递归删除一个不带头结点的单链表L中的所有值为x的结点 
void delX(LinkList &h,elemType x){
    LNode *t;
    if(h==NULL)
        return;
    else if(h->data==x){
        t=h;
        h=h->next;
        free(t);
        delX(h,x);
    }else
        delX(h->next,x);
    
}

//问题一:方法二 迭代 
void delX2(LinkList &L,elemType x){
    while(L&&L->data==x)
        L=L->next;
    LNode *pre=L;
    LNode *p=L->next;
    LNode *t;
    while(p){
        while(p&&p->data==x){
            t=p;
            p=p->next;
            free(t);
        }
        pre->next=p;
        pre=p;
        if(p)
            p=p->next;
    }
}
//问题二:反向输出单链表中节点的值
void printReverse(LinkList L){
    if(L->next!=NULL)
        printReverse(L->next);
    printf("%d ",L->data);
} 
//问题三 删除单链表中最小值的节点
void delMin(LinkList &L){
    LNode *pre=L;
    LNode *p=L->next;
    LNode *min = L->next;
    while(p->next){
        if(p->next->data<min->data){
            min = p;
        }
        p=p->next;
    }
    LNode *t=min->next;
    min->next=min->next->next;
    free(t);
} 
//问题四 删除值介于 a b之间的节点
void delBetween(LinkList &L,elemType a,elemType b){
    LNode *pre=L,*p=L->next;
    while(p){
        while(p&&p->data>=a&&p->data<=b)
            p=p->next;
        pre->next=p;
        pre=p;
        if(p)
            p=p->next;
    }
} 
//问题五 找出两个链表的公共节点
LinkList search_common(LinkList L1,LinkList L2){
    int len1=0,len2 = 0;
    LNode *p1=L1->next,*p2 = L2->next;
    while(p1){
        len1++;
        p1=p1->next;
    }
    while(p2){
        len2++;
        p2=p2->next;
    }
    LNode *longList;
    LNode *shortList;
    int dist;
    if(len1>len2){
        longList = L1->next;
        shortList = L2->next;
        dist = len1-len2;
    }else{
        longList = L2->next;
        shortList = L1->next;
        dist = len2-len1;
    }
    while(dist--)
        longList = longList->next;
    while(longList!=shortList){
        longList = longList->next;
        shortList = shortList->next;
    }
    return longList;
    
}

 

posted on 2018-07-24 15:05  何大土  阅读(246)  评论(0编辑  收藏  举报