#include<stdio.h>
#include<stdlib.h>
#include<iostream> using namespace std; struct Node
{
int data;
Node *next;
}; //初始化
Node *init()
{
Node *head=new Node;
head->next=NULL;
return head;
} //头插法创建节点
void insetList(Node *head,int i)
{
Node *cur=new Node; cur->data=i; cur->next=head->next;
head->next=cur;
} //链表A,B生成
void CreateList(Node *head_A,Node *head_B)
{
for(int i=0;i<20;i++)
{
insetList(head_A,i);
i++;
insetList(head_B,i);
}
//增加链表B的长度
insetList(head_B,20);
insetList(head_B,25);
} void Linklist(Node *head_A,Node *head_B,Node *List_C)
{
Node *pa=head_A->next; //pa指向链表A的首元节点
Node *pb=head_B->next; //pa指向链表B的首元节点
Node *pc=List_C; //pc指向C的头节点 while(pa&&pb) //某一链表遍历结束即退出
{
pc->next=pa; //先存A链表的节点
pc=pa; //pc指向pa,pc前进一个节点
pa=pa->next; //pa前进一个节点 pc->next=pb; //存B链表的节点
pc=pb;
pb=pb->next;
} //判断谁先结束,然后把没结束的剩余结点的链接上
pc->next=pa?pa:pb; delete head_B; //释放链表B
} //打印链表
void print(Node *head)
{
Node *temp=head->next; //防止头指针移动
while(temp)
{
cout<<temp->data<<" ";
temp=temp->next;
}
}
void main()
{
Node *head_A=init(); //链表A
Node *head_B=init(); //链表B
Node *List_C=head_A; //链表C //创建链表A,B
CreateList(head_A,head_B); //打印链表
cout<<"链表A为:";
print(head_A);
cout<<endl<<"链表B为:";
print(head_B); //合并链表A,B生成链表C
Linklist(head_A,head_B,List_C);
cout<<endl<<"链表C为:"<<endl;
print(List_C); system("pause"); }

  总结:链表的遍历注意不要随意改变头指针的位置,进行合并时需要声明三个结构体指针用于进行合并,注意某一链表结束时需要进行链接,再释放生成的链表.

c语言实现两个单链表的交叉合并的更多相关文章

  1. python经典面试算法题1.3:如何计算两个单链表所代表的数之和

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.2 如何实现链表的逆序 [华为笔试题] 难度系数:⭐⭐⭐ ...

  2. 02-线性结构1 两个有序链表序列的合并(15 point(s)) 【链表合并】

    02-线性结构1 两个有序链表序列的合并(15 point(s)) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L ...

  3. PTA 两个有序链表序列的合并

    6-5 两个有序链表序列的合并 (15 分)   本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L ...

  4. C++学习(三十五)(C语言部分)之 单链表

    单链表 就好比火车 火车头-->链表头部火车尾-->链表尾部火车厢-->链表的节点火车厢连接的部分-->指针火车中的内容-->链表节点的的数据链表节点包含数据域和指针域数 ...

  5. leetcode 题解 Add Two Numbers(两个单链表求和)

    题目: You are given two linked lists representing two non-negative numbers. The digits are stored in r ...

  6. C语言版本:循环单链表的实现

    SClist.h #ifndef __SCLIST_H__ #define __SCLIST_H__ #include<cstdio> #include<malloc.h> # ...

  7. c语言有头循环单链表

    /************************************************************************* > File Name: singleLin ...

  8. 【剑指offer】合并两有序单链表

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25739727 九度OJ上AC,採用归并的思想递归实现. 题目描写叙述: 输入两个单调递增的 ...

  9. c语言实现--带头结点单链表操作

    可能是顺序表研究的细致了一点,单链表操作一下子就实现了.这里先实现带头结点的单链表操作. 大概有以下知识点. 1;结点:结点就是单链表中研究的数据元素,结点中存储数据的部分称为数据域,存储直接后继地址 ...

随机推荐

  1. 交换机telnet配置

    新开箱交换机开机配置Telnet需要三个步骤: 1.开启telnet是能:系统视图模式下输入命令: telnet server enable #开启telnet功能# 2.Telnet创建账号:aaa ...

  2. subline 建立服务器

    http://blog.csdn.net/csdn_chenli/article/details/53173953

  3. 利用Python进行数据分析(第二版)电子版书籍分享

    资料下载地址: 链接:https://pan.baidu.com/s/1y1C0bJPkSn7Sv6Eq9G5_Ug 提取码:vscu <利用Python进行数据分析(第二版)>高清中文版 ...

  4. bom头

    最近做ecshop经常碰到bom头问题,具体表现用chrome开发工具查看会出现小红点, 具体删除办法见网上,我是用老文件copy再替换内容.

  5. rsyslog及loganalyzer

    日志:历史日志 历史事件: 时间记录,事件的关键性程度,loglevel 系统日志服务: syslogd,守护进程 syslogd:system klogd:kernel   rsyslog: sys ...

  6. 6354 Everything Has Changed

    Edward is a worker for Aluminum Cyclic Machinery. His work is operating mechanical arms to cut out d ...

  7. day 07 数据类型,集合,深浅copy

    1.day 06 内容回顾 小数据池 int :-5-256 str:特殊字符 ,*20 ascii:8位 1字节 表示一个字符 unicode:32位 4个字节 , 表示一个字符 字节表示8位表示一 ...

  8. python修炼第二天

    第二天的课程还是塞得满满的,一天下来充实也疲惫.那天听出金星师傅嗓子有些沙哑,想必是讲课说话太多导致.啥也不说了.唯有努力练功方可回报! 1 序: 今天主要是详细学习了绝大部分的数据类型,字符编码,边 ...

  9. 网络相关配置,SSH服务,bash, 元字符

    作业一:临时配置网络(ip,网关,dns)+永久配置  设置IP和掩码ifconfig eth0 192.168.2.2 netmask 255.255.255.0设置网关route add defa ...

  10. 【转载】安装 gephi 软件

    作者:小小爽链接:https://www.zhihu.com/question/21268129/answer/354924066来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...