博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构学习---有序链表的合并
阅读量:5173 次
发布时间:2019-06-13

本文共 2307 字,大约阅读时间需要 7 分钟。

递归调用 简单

有点像归并排序的合并部分吧。

 

 

因为是用vs创建的工程,所以主函数是_tmain。

 

1 // 链表.cpp : 定义控制台应用程序的入口点。 2 // 3  4 #include "stdafx.h" 5  6  7 typedef struct Node { 8     int data; 9     struct Node *next;10 11 } LinkList;12 13 14 //链表组合的函数 输入:两个有序无头结点链表 输出:将链表组合成一个无头结点有序链表15 LinkList * combie(LinkList *l1, LinkList * l2) {16 17     LinkList * p=NULL;18 19     if (l1==NULL && l2==NULL)20     {21         p = NULL;22     }23     if (l1==NULL&&l2!=NULL)24     {25         p = (LinkList *)malloc(sizeof(LinkList));26         p->data = l2->data;27         p->next = combie(NULL, l2->next);28 29     }30 31     if (l2 == NULL&&l1 != NULL)32     {33         p = (LinkList *)malloc(sizeof(LinkList));34         p->data = l1->data;35         p->next = combie(l1->next,NULL);36 37     }38     if (l1!=NULL && l2!=NULL)39     {40         p = (LinkList *)malloc(sizeof(LinkList));41 42         p->data = l1->data <= l2->data ? l1->data : l2->data; 43         p->next = combie(l1->data <= l2->data ? l1->next : l1, l1->data <= l2->data ? l2 : l2->next);44     45     }46     return p;47 }48 49 50 51 //根据数组创建无头结点的链表52 LinkList * create(int a[], int n) {53     LinkList *h = NULL, *p, *pre = NULL;54     for (int i = 0; i < n; i++)55     {56         p=(LinkList *)malloc(sizeof(LinkList));57         p->data = a[i];58         if (pre) pre->next = p;59         pre = p;60         if (i == 0) h = p;61         if (i == n - 1) p->next = NULL;62         63     }64     return h;65 66 67 }68 69 70 //打印输出无头结点的链表71 void display(LinkList *list) {72     LinkList *p = list;73     while (p != NULL)74     {75         cout << p->data << " ";76         p = p->next;77     }78     cout << endl;79 80 }81 82 int _tmain(int argc, _TCHAR* argv[])83 {84     int a []= { 1, 2, 10, 80,500 };85     LinkList *l1 = create(a,5);86     display(l1);87     int b[] = { 0,4, 5, 100, 177,250 };88     LinkList *l2 = create(b, 6);89     display(l2);90     LinkList * p = combie(l1, l2);91     display(p);92     system("pause");93     return 0;94 }

 stdafx.h 的内容挺简单的

// stdafx.h : 标准系统包含文件的包含文件,// 或是经常使用但不常更改的// 特定于项目的包含文件//#pragma once#include "targetver.h"#include 
#include
// TODO: 在此处引用程序需要的其他头文件#include
#include
using namespace std;

 

转载于:https://www.cnblogs.com/xcr1234/p/4608233.html

你可能感兴趣的文章
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
有关快速幂取模
查看>>
NOI2018垫底记
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
NSPredicate的使用,超级强大
查看>>
自动分割mp3等音频视频文件的脚本
查看>>
判断字符串是否为空的注意事项
查看>>
布兰诗歌
查看>>
(转)Tomcat 8 安装和配置、优化
查看>>