`
给一理由先
  • 浏览: 24397 次
  • 性别: Icon_minigender_1
  • 来自: 衡阳
文章分类
社区版块
存档分类
最新评论

阔别两年再用C++

阅读更多
今天一高中同学发短信求助,帮忙写一段程序,实现2个单链表的合并,并按升序排列。

哎,当初没有好好学习,数据结构什么的很差劲,只有硬着头皮,看书,查资料,终于算是用

C++编写出来了,虽然检查错误耗费了一个下午。
#include <iostream>
using namespace std;
#define  NUM  8

struct LNode
{ 
 int data;
 struct LNode *next;
};

typedef struct LNode * LinkList;

/**
将数组插入链表
*/
  void create(LinkList &list, int a[])
{
 struct LNode *p;
 int i;
 list->next = NULL;

 for (i = NUM-1; i >= 0; --i)
 {
  p = new LNode;
  p->data = a[i];
  p->next = list->next;
  list->next = p;
 }
}

 
/**
显示链表节点值
*/
  void show(LinkList list)
{
 struct LNode *p;
 p = list->next;
 
 while (p)
 {
  cout << p->data << ' ';
  p = p->next;
 }
}

/**
合并链表
  */
 LinkList Merge(LinkList la, LinkList lb, LinkList &lc)
 {
    
     LNode *p;

     // 确定最大值在la上, 还是lb上
     if(la->data > lb->data)
	 {
     lc = p = la;
     la = la->next; 
	 }
     else 
	 {
    lc = p = lb; 
    lb = lb->next;
	 }

     while(la && lb)
	 {
         if(la->data <= lb->data)
		 {
             p->next = la;
             la = la->next;
         }
		 else 
         {
             p->next = lb;
             lb = lb->next;
         }
		 
         p = p->next;
     }
     // 剩余部分链表的挂接
    p->next = (la ? la:lb);

	 return lc;
 }
 

void main()
{
 LinkList s;
 LinkList u;
 LinkList A;

 int ss[NUM]={1,3,5,7,9,11,13,17};
 int uu[NUM]={2,8,14,19,21,25,26,33};


 s = new LNode;
 u = new LNode;
 A = new LNode;
 create(s, ss);
 create(u, uu);

 
 
 cout<<"链表s显示:"<<endl;
 show(s);
 cout<<endl;
 cout<<"链表u显示:"<<endl;
 show(u);
 cout<<endl;

 Merge(s,u,A);
 cout<<"合并之后链表A显示:"<<endl;
 show(A);
 cout<<endl;

}


程序 = 数据结构 + 算法

基础不扎实很难向上发展,否则只能成为代码民工;

给自己打个气,一步一步来,向着自己的梦想慢慢前进。

浪费的青春要自己争回来!

分享到:
评论

相关推荐

    阔别六年之久 网易网站联盟昨日重新上线.docx

    阔别六年之久 网易网站联盟昨日重新上线.docx

    2024年阔别三年 李子柒回归仍“顶流”——三农内容创作及品牌机会点洞察报告.pdf

    2024年阔别三年 李子柒回归仍“顶流”——三农内容创作及品牌机会点洞察报告.pdf

    C++程序设计知识提纲.docx

    "C++程序设计知识提纲" 本资源摘要信息涵盖了 C++ 程序设计的基础知识点,包括基本概念、数据类型、变量、运算符、控制结构、函数、数组、指针、面向对象编程等。 基本概念 * 算法:对数据处理操作的步骤。 * ...

    WebDAV C++ Client-开源

    WebDAV C++ Client是一个专为C++开发者设计的开源库,主要目的是为了方便与WebDAV服务器进行交互。WebDAV(Web Distributed Authoring and Versioning)是一种基于HTTP协议的扩展,允许用户通过标准的HTTP请求方法如...

    易阔LED DLL示例程序

    在"EQ2008动态库文件"中,我们可以预期找到与易阔2008年版本相关的LED控制功能。这些文件可能包括: - 库文件(如eqled.dll):实际的动态链接库,包含了实现LED控制的函数。 - 头文件(如eqled.h):定义了DLL导出...

    易阔LED软件

    《易阔LED软件:探索LED显示屏控制系统的奥秘》 LED显示屏在现代视觉传播中扮演着至关重要的角色,从商业广告到大型活动,无处不在。而在这背后,一款高效、稳定的LED控制软件是确保显示效果的关键。"易阔LED软件...

    rshell:用 C++ 编写的自定义 bashterminal

    *** 当用exit命令退出rshell时,make会自动为你删除bin文件夹*** ##错误、行为和限制 $ false && false && ls -a || pwd $ false && false && ls -a || pwd :此命令只会在应该只运行 pwd 时运行ls -a 。 对于这种...

    大黑阔的数据包

    大黑阔的数据包

    阔知网课开发平台

    杭州阔知教育平台开发

    阔福门说明书

    阔福提升门结构说明书,方便维修人员进行修理

    多波束测深假象消除与动态空间归位技术_魏玉阔

    多波束测深假象消除与动态空间归位技术_魏玉阔多波束测深假象消除与动态空间归位技术_魏玉阔

    山寨黑阔工具

    山寨黑阔工具

    Delaunay三角剖分算法c++实现【逐点插入法的动态图片】

    在C++中实现Delaunay三角剖分,通常采用逐点插入法,即从点集中的每个点开始,逐步插入并调整已有的三角形结构,以保持Delaunay性质。 首先,我们需要理解Delaunay三角剖分的基本概念和构建过程。在二维空间中,...

    2048:主机版 2048 (C++)

    本文将深入探讨用C++实现这款游戏的关键技术和知识点。 1. **C++基础知识**:在编写2048游戏时,我们需要掌握C++的基本语法,包括变量声明、数据类型、控制结构(如循环和条件语句)、函数的定义和调用等。 2. **...

    论文研究 - 阔韧带异位妊娠和输卵管妊娠的处理:一例报告

    该患者2年前有右输卵管妊娠史,并因腹腔镜输卵管吻合术而终止。 根据对该患者的长期随访,我们发现她在广泛结扎异位妊娠后5个月复发了右输卵管妊娠。 她通过腹腔镜接受输卵管切除术。 我们介绍了该病例,以讨论阔...

    单链表的实现

    在C++或Java中,可以这样定义节点: ```cpp struct ListNode { int val; // 数据域 ListNode *next; // 指针域,指向下一个节点 ListNode(int x) : val(x), next(NULL) {} // 构造函数 }; ``` ### 链表的创建 2...

    Excel-XML:基于 XML 的 Excel 电子表格的 C++ 库

    用 #include "Excel.h" int main(int argc, const char * argv[]) { //Create an Excel Document Excel spreadsheet("/Users/deisterhold/Desktop/Test.xml"); //Get the main workbook (Excel only has a ...

    20210721-平安证券-信用债打破刚兑的前世今生~2021年版.pdf

    预计2021年下半年信用利差将温和走阔,信用风险分化将加剧。特别是在地产和城投板块,信用风险可能增加。但同时也指出,地方政府偿债意愿的提升和经营现金流的改善,可能使得产业国企的信用风险相对平稳。 风险提示...

Global site tag (gtag.js) - Google Analytics