博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
02-线性结构1 两个有序链表序列的合并
阅读量:2439 次
发布时间:2019-05-10

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

本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。

函数接口定义:

List Merge( List L1, List L2 );

其中List结构定义如下:

typedef struct Node *PtrToNode;struct Node {    ElementType Data; /* 存储结点数据 */    PtrToNode   Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */

L1和L2是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge要将L1和L2合并为一个非递减的整数序列。应直接使用原序列中的结点,返回归并后的链表头指针。

参考代码

#include 
#include
typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; PtrToNode Next;};typedef PtrToNode List;List Read(); /* 细节在此不表 */void Print( List L ); /* 细节在此不表;空链表将输出NULL */List Merge( List L1, List L2 );int main(){ List L1, L2, L; L1 = Read(); L2 = Read(); L = Merge(L1, L2); Print(L); Print(L1); Print(L2); return 0;}/* 你的代码将被嵌在这里 */List Read(){ int n; scanf("%d",&n); List L=(struct Node *)malloc(sizeof(struct Node)); L->Next=NULL; List ans=L; while (n--){ if (L->Next==NULL){ List temp=(struct Node *)malloc(sizeof(struct Node)); temp->Next=NULL; scanf("%d",&temp->Data); L->Next=temp; L=L->Next; } } return ans;}void Print( List L ){ if (L->Next==NULL){ printf("NULL\n"); return; } List temp=L->Next; while (temp){ printf("%d ",temp->Data); temp=temp->Next; } printf("\n");}List Merge( List L1, List L2 ){ List L3=(struct Node *)malloc(sizeof(struct Node)); List L=L3; List p=L1->Next; List q=L2->Next; while (p && q){ if (p->Data < q->Data){ L->Next=p; p=p->Next; } else{ L->Next=q; q=q->Next; } L=L->Next; } L->Next=NULL; if (p) L->Next=p; if (q) L->Next=q; L1->Next=NULL; L2->Next=NULL; return L3;}

转载地址:http://xdbqb.baihongyu.com/

你可能感兴趣的文章
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
查看>>
SQL面试题之行列转换
查看>>
基于restful的协议
查看>>
vim /etc/profile 写入时 出现 E121:无法打开并写入文件解决方案
查看>>
FastJson解析内部类的实例时报错:No default constructor for entity
查看>>
分布式数据库系统概述
查看>>
top命令
查看>>
mv命令
查看>>
PL/SQL数组 一
查看>>
阿里巴巴公司DBA笔试题 二
查看>>
Linux专题
查看>>
Installing Oracle9i 32-bit on Red Hat 9, 8.0, 7
查看>>
ORACLE面试题 一
查看>>
使用Opatch工具应用过渡性Patch
查看>>
ORACLE数据类型
查看>>
删除笔记本电脑EISA隐藏分区
查看>>
p3095277_9204_LINUX.zip
查看>>
Redhat Linux版本说明
查看>>
I cannot start the X server 问题的解决
查看>>
cp命令详解_cp命令
查看>>