c++实现链表 增,删,查,合并

#include <iostream>
# include<vector>
using namespace std;
struct linkList{
    int data;
    linkList* next;
};
linkList* createList(){//创建一个带头结点的链表,数据域记录链表长度,初始化为0
    linkList* L=new linkList();
    L->data=0;
    L->next=NULL;
    return L;
}
void insert(linkList*L,int elem){//插入一个节点
    linkList* Pre=L;
    linkList* P=L->next;
    while(P!=NULL&&P->data<elem){//寻找插入位置
        P=P->next;
        Pre=Pre->next;
    }
    linkList* current=new linkList();//新建节点并且插入
    current->data=elem;
    Pre->next=current;
    current->next=P;
    L->data+=1;//链表长度加1
    }
void deletel(linkList*L, int elem){
    linkList* Pre=L;
    linkList* P=L->next;
    while(P->data!=elem){//查找删除位置
         P=P->next;
         Pre=Pre->next;
    }
    Pre->next=P->next;
    delete(P);
    L->data--;
}
void output(linkList*L){
    cout<<"链表长度为:"<<L->data<<endl;
    linkList* P=L->next;
    cout<<"链表数据为:";
    if(P==NULL){
        cout<<"链表为空";
    }
    while(P){
        cout<<P->data<<" ";
        P=P->next;
    }
    cout<<endl;
}
linkList* check(linkList*L,int elem){
    linkList* P=L->next;
      while(P->data!=elem){//查找删除位置
         P=P->next;
    }
    return P;
}
linkList* merge(linkList* L1,linkList* L2){
     linkList* P1=L1->next;
     linkList* P2=L2->next;
     linkList* L3=new linkList();
     linkList* cur=L3;
     L3->data=L1->data+L2->data;
     while(P1&&P2){
        if(P1->data<P2->data){
            cur->next=P1;
            P1=P1->next;
            cur=cur->next;
        }
        else{
            cur->next=P2;
            P2=P2->next;
            cur=cur->next;
        }
     }
    while(P1){
         cur->next=P1;
         P1=P1->next;
         cur=cur->next;
    }
    while(P2){
          cur->next=P2;
            P2=P2->next;
            cur=cur->next;
    }
   return L3;
}
int main()
{
    linkList *L1=createList();
    vector<int> a={1,2,3};
    linkList *L2=createList();
    vector<int> b={4,5,6};
    for(int i=0;i<a.size();i++){
        insert(L1,a[i]);
    }
    for(int i=0;i<b.size();i++){
        insert(L2,b[i]);
    }
     output(L1);
     output(L2);
     output(merge(L1,L2));
    return 0;

}

运行效果如下


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值