c语言实现两个单链表的交叉合并
#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语言实现两个单链表的交叉合并的更多相关文章
- python经典面试算法题1.3:如何计算两个单链表所代表的数之和
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.2 如何实现链表的逆序 [华为笔试题] 难度系数:⭐⭐⭐ ...
- 02-线性结构1 两个有序链表序列的合并(15 point(s)) 【链表合并】
02-线性结构1 两个有序链表序列的合并(15 point(s)) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L ...
- PTA 两个有序链表序列的合并
6-5 两个有序链表序列的合并 (15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L ...
- C++学习(三十五)(C语言部分)之 单链表
单链表 就好比火车 火车头-->链表头部火车尾-->链表尾部火车厢-->链表的节点火车厢连接的部分-->指针火车中的内容-->链表节点的的数据链表节点包含数据域和指针域数 ...
- leetcode 题解 Add Two Numbers(两个单链表求和)
题目: You are given two linked lists representing two non-negative numbers. The digits are stored in r ...
- C语言版本:循环单链表的实现
SClist.h #ifndef __SCLIST_H__ #define __SCLIST_H__ #include<cstdio> #include<malloc.h> # ...
- c语言有头循环单链表
/************************************************************************* > File Name: singleLin ...
- 【剑指offer】合并两有序单链表
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25739727 九度OJ上AC,採用归并的思想递归实现. 题目描写叙述: 输入两个单调递增的 ...
- c语言实现--带头结点单链表操作
可能是顺序表研究的细致了一点,单链表操作一下子就实现了.这里先实现带头结点的单链表操作. 大概有以下知识点. 1;结点:结点就是单链表中研究的数据元素,结点中存储数据的部分称为数据域,存储直接后继地址 ...
随机推荐
- Django-models & QuerySet API
django中配置mysql数据库 1,首先配置settings.py. 一是在INSTALLED_APPS里面加入app名称: 二是配置数据库相关信息 INSTALLED_APPS = [ 'dja ...
- 人生苦短,我用python(目录)
一.python基础篇 python中闭包及延时绑定问题 python中的装饰器.生成器 二.前端 bootstrap框架 BOM&DOM JavaScript中的词法分析 三.数据库 mys ...
- WDA基础十五:POPUP WINDOW
1.组件控制器定义属性: 2.实现popup方法: METHOD stock_popup . DATA: l_cmp_api TYPE REF TO if_wd_component, l_window ...
- kafka 消费模型图
- 有价值的IPFS博客
前一阵子研究IPFS,回头找资料有些找不到,再次汇总一下有价值的IPFS资料 戴嘉乐-IPFS的本质架构及应用:https://blog.csdn.net/u012357002/article/d ...
- 20175212课下作业 MyCP
20175212课下作业 MyCP 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2 ...
- SQL SEVER 开窗函数总结
作为一名刚刚入门的开发人员,要学的东西很多很多,有些无从下手.秉着“问题是病.技术是药.对症下药”的原则,将工作中遇到的问题所需的技术进行梳理.归纳和总结. 一.什么是开窗函数 首先,什么是开窗函数, ...
- Vuex学习笔记(-)安装vuex
什么是Vuex? vuex是一个专门为vue.js应用程序开发的状态管理模式.即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. 安装vuex(前提是已经安装好vue-cli脚手 ...
- Python爬虫——西刺
一直对爬虫这块蛮感兴趣的,所以花了点时间看了看,写了个小脚本 代码可能有点乱,毕竟Python小白,勿喷…… 嗯,话不多说,放码出来 # -*- coding: UTF-8 -*- import re ...
- sed命令总结-Linux
sed命令总结-Linux linuxsed 2018年02月08日 19时27分57秒 命令语法经常忘记,每次总是看笔记不切实际,记不起来的要多查manual,本次总结按照manual总结,希望下次 ...