合并两个链表

#include<iostream>
using namespace std;
struct node
{
 int data;
 node *next;
};

node *head=NULL;
node *head_2=NULL;
node *pTemp=NULL;

void push_back(node *&head,node *&p)
{
 pTemp=head;
 while(NULL!=pTemp->next)
  pTemp=pTemp->next;
 p->next=pTemp->next;
 pTemp->next=p;
}

void display(node *&head)
{
 pTemp=head->next;
 while(NULL!=pTemp)
 {
  cout<<pTemp->data<<" ";
  pTemp=pTemp->next;
 }
 cout<<endl;
}


node* connect_link(node *&head,node *&head_2)
{
 pTemp=head;
 while(NULL!=pTemp->next)
  pTemp=pTemp->next;
 pTemp->next=head_2->next;
 return head_2;
}


void destroy(node *&head)
{
 node *p=head->next;
 while(NULL!=p->next)
 {
  pTemp=p->next;
  cout<<"del:"<<p->data<<endl;
  delete p;
  p->next=NULL;
  p=pTemp;
 }
 cout<<"del:"<<pTemp->data<<endl;
 
 delete pTemp;

 cout<<"我们没有初始化头结点的数据域,因此由系统产生一个较大的数赋给头结点的数据域"<<endl;
 cout<<"del:"<<head->data<<endl;
 delete head;
 head->next=NULL;
}

int main()
{
 head=new node;
 head->next=NULL;

 head_2=new node;
 head_2->next=NULL;

 node *p=NULL;
 int i=0;
 for(;i<10;++i)
 {
  p=new node;
  p->data=i;
  push_back(head,p);

  p=new node;
  p->data=i+100;
  push_back(head_2,p);
 }

 cout<<"输出单链表1"<<endl;
 display(head);
 cout<<endl;
 cout<<"输出单链表2"<<endl;
 display(head_2);
    cout<<endl;

 p=connect_link(head,head_2);
 delete p;
 p=NULL;
 cout<<endl;
 cout<<"输出合并后的单链表"<<endl;
 display(head);

 cout<<"回收单链表内存空间"<<endl;
 destroy(head);

 return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值