/*不新申请空间将两个链表合并
* */
# include <iostream>
using namespace std;
//辅助类结构体,作为链表的节点
struct Node
{
int val;
Node* next;
};
//尾插法创建单链表函数
Node* create(int n)
{
Node* head;
Node* p1;
Node* p2;
for (int i=0; i<n; i++)
{
if (i == 0)
{
head = new Node;
cout<<"请输入第1个元素:";
cin>>head->val;
head->next = NULL;
p1 = head;
}
else
{
p2 = new Node;
cout<<"请输入第"<<i+1<<"个元素:";
cin>>p2->val;
p2->next = NULL;
p1->next = p2;
p1 = p2;
}
}
return head;
}
//合并链表函数
void merge(Node* headA,Node* headB)
{
Node* prev; //用于保存链表A最后一个节点的地址,将它和B连接
prev = NULL;
while(headA != NULL){
prev = headA;
headA = headA->next;
}
prev->next = headB;
headB = prev;
}
void show(Node* head)
{
Node*p = head;
while (p != NULL)
{
cout<<p->val <<" ";
p = p->next;
}
cout << endl;
}
int main()
{
Node* headA;
Node* headB;
Node* p;
int a,b;
cout << "请指定要创建链表A的节点个数: ";
cin >> a;
headA = create(a);
cout<<"链表A: \n";
show(headA);
cout << "请指定要创建链表B的节点个数: ";
cin >> b;
headB = create(b);
cout<<"链表B: \n";
show(headB);
//打印链表
merge(headA,headB);
cout<<"合并后的链表为:\n";
show(headA);
return 0;
}
* */
# include <iostream>
using namespace std;
//辅助类结构体,作为链表的节点
struct Node
{
int val;
Node* next;
};
//尾插法创建单链表函数
Node* create(int n)
{
Node* head;
Node* p1;
Node* p2;
for (int i=0; i<n; i++)
{
if (i == 0)
{
head = new Node;
cout<<"请输入第1个元素:";
cin>>head->val;
head->next = NULL;
p1 = head;
}
else
{
p2 = new Node;
cout<<"请输入第"<<i+1<<"个元素:";
cin>>p2->val;
p2->next = NULL;
p1->next = p2;
p1 = p2;
}
}
return head;
}
//合并链表函数
void merge(Node* headA,Node* headB)
{
Node* prev; //用于保存链表A最后一个节点的地址,将它和B连接
prev = NULL;
while(headA != NULL){
prev = headA;
headA = headA->next;
}
prev->next = headB;
headB = prev;
}
void show(Node* head)
{
Node*p = head;
while (p != NULL)
{
cout<<p->val <<" ";
p = p->next;
}
cout << endl;
}
int main()
{
Node* headA;
Node* headB;
Node* p;
int a,b;
cout << "请指定要创建链表A的节点个数: ";
cin >> a;
headA = create(a);
cout<<"链表A: \n";
show(headA);
cout << "请指定要创建链表B的节点个数: ";
cin >> b;
headB = create(b);
cout<<"链表B: \n";
show(headB);
//打印链表
merge(headA,headB);
cout<<"合并后的链表为:\n";
show(headA);
return 0;
}