#include <iostream> using namespace std; typedef struct node { int val; node* next; }node; class ListNode { private: node* l1; node* l2; node* head; //新的头结点 node* rear; //新的尾结点 public: bool InitList() { l1=new node; l2=new node; l1->next=nullptr; l2->next=nullptr; l1->val=0; //用来记录链表中有效结点的个数 l2->val=0; //用来记录链表中有效结点的个数 return true; } //首先new一个空的结点 bool CreateList1(int val) { node* temp=l1;//将temp赋值l1的地址 temp->val++; while(temp->next!=nullptr&&val>temp->next->val) { temp=temp->next; //创建一个有序的链表 } if(temp->next!=nullptr) //说明是val<=temp->next->val { node* after = temp->next; temp->next=new node; temp->next->val=val; temp->next->next=after; } else { temp->next=new node; temp->next->val=val; temp->next->next=nullptr; } return true; } bool CreateList2(int val) { node* temp=l2;//将temp赋值l1的地址 temp->val++; while(temp->next!=nullptr&&val>temp->next->val) { temp=temp->next; //创建一个有序的链表 } if(temp->next!=nullptr) //说明是val<=temp->next->val { node* after = temp->next; temp->next=new node; temp->next->val=val; temp->next->next=after; } else { temp->next=new node; temp->next->val=val; temp->next->next=nullptr; } return true; } bool printList2() { while(l2->next!=nullptr) { cout<<l2->next->val<<endl; l2=l2->next; } return true; } bool Merge() //合并两个有序的链表 { node* x=l1->next; node* y=l2->next; while(x!=nullptr&&y!=nullptr) { if(x->val>y->val) { head=y; rear=y->next; while(rear!=nullptr&&rear->val<x->val) { head=head->next; rear=rear->next; } head->next=x; node* Next=x->next; x->next=rear; x=Next; } else { node* Next=x->next; x->next=y; node* ss = l2; while(ss->next!=y) { ss=ss->next; } ss->next=x; x=Next; } } return true; } }; int main() { ListNode space; space.InitList(); space.CreateList1(4); space.CreateList1(56); space.CreateList1(1); space.CreateList2(9); space.CreateList2(23); space.CreateList2(0); space.Merge(); space.printList2(); //打印l2链表的数据 system("pause"); }