数据结构-线性表-题

未调试:

#include<stdio.h>
#include<stdlib.h>

typedef struct Lnode{
    int data;
    struct Lnode *next;//结构体的指针 
}*LinkList;
LinkList L;
//1、fun:删除节点的数据为X的 
//brief:@链表@x 
//return:链表 
LinkList DeleyX(LinkList &L,int X){
    LinkList TempP;
    TempP=L;
    if(TempP->next==NULL){
        return L;
    }
    while(TempP->next!=NULL){
        if(TempP->next->data==X){
            TempP->next=TempP->next->next;
            free(TempP->next);
        }
        TempP=TempP->next;
    }
    return L; 
}

//2、fun:删除节点最小的数据 
//brief:@链表
//return:链表
LinkList DeleyMin(LinkList &L){
    LinkList TempP;
    TempP=L;
    int TempNum=TempP->data;
    while(TempP->next!=NULL){
        if(TempP->data<TempNum){
            TempNum=TempP->data;
        }
        TempP=TempP->next;
    }
    return L;
}
//3、
//4、fun:删除链表中的关于两个值之间的数值
//brief:@链表@数值1@数值2
//return:链表
LinkList DeleyXY(LinkList &L,int X,int Y){
    LinkList TempP;
    TempP = L->next;
    while(TempP->next!=NULL){
        if(TempP->data>X&&TempP->data<Y){
            TempP->next=TempP->next->next;
            free(TempP);
        }
        TempP=TempP->next;
    }
    return L;
}

//6fun:将数组中的元素拆分成两个链表
//brief@链表一@链表二@链表三
//return:bool
bool DeviseDL(LinkList &A,LinkList &B,LinkList &C){
    LinkList TempP,TempM;//用于表示相邻的两个数据,和遍历数据 
    TempP=A->next;
    TempM=A->next->next; 
    LinkList TempB,TempC;
    while(TempP!=NULL&&TempM!=NULL){
        TempB=(LinkList)malloc(sizeof(Lnode));
        TempB->data=TempP->data;
        TempP=TempP->next; 
        TempC=(LinkList)malloc(sizeof(Lnode));
        TempC->data=TempM->data;
        TempM=TempP->next->next;
    }
    return true;

//fun:除去递增链表中重复的数据
//@链表
//return:链表 
LinkList DeleyRe(LinkList &L){
     LinkList Temp;
     Temp = L;
     if(Temp==NULL){
         return L;
     }
     while(Temp->next!=NULL){
         if(Temp->data==Temp->next->next->data){
             Temp->next=Temp->next->next->next;
             free(Temp->next);
         }
         Temp=Temp->next;
     }
     return L;
}
//8fun:BC有序递增链表中的公共元素组成A
//brief@链表@链表@链表
//return true; 
bool IncreaceDL(LinkList &A,LinkList &B,LinkList &C){
    LinkList j,k,l;
    j=A->next;
    k=B->next;
    l=C->next;
    int a=0;
    int s=0;
    int d=0;
    while(k->next!=NULL){
        a=j->data;
        s=k->data;
        while(l->next!=NULL){
            if(a==s){
                LinkList Temp;
                Temp=(LinkList)malloc(sizeof(Lnode));
                Temp->next=NULL;
                Temp->data=s;
            }
        }
        k=k->next;
        l=l->next;
    }
    return true;
}
//fun:a和b中的相同元素组合成一个集合在放入A中
//brief;@a@b
//return a
LinkList JiHeAB(LinkList &A,LinkList &B){
    LinkList p,q;
    p=p->next;
    q=q->next; 
    LinkList j,k;
    j=p;
    while(p&&q){
        if(p->data==q->data){
        //保留 p的值
        j->next=p;
        j=p;
        p=p->next; 
        //释放 q的值 
        k=q;
        q=q->next;
        free(k);
        }
        else if(p->data<q->data){
            k=p;
            p=p->next;
            free(k);
        } else{
            k=q;
            q=q->next;
            free(k);
        }
    }
    while(p){
        //释放剩余p,当q提前结束 
        k=p;
        p=p->next;
        free(k);
    }
    while(q){
        //释放剩余q,当p提前结束 
        k=q;
        q=q->next;
        free(k);
    }
    j->next=NULL;
    free(q);
    return p;

}
//fun:ab为两个链表,判断b是不是啊的子链表 
//brief@链表a@链表b 
//return: true或者false
bool LianXu(LinkList &A,LinkList &B){
    LinkList p,q;
    p=A;
    q=B;
    int len;
    while(p->next!=NULL){
        if(p->data==q->data){
            while(q->next!=NULL){
                if(p->data!=q->data){
                    return false;    
                }
            }
            return true;
        }
        p=p->next;
    }

int main(){
}

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值