PTA合并两个链表

下面展示一些 内联代码片

// A code block
var foo = 'bar';
// An highlighted block
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

typedef struct Node{
    int Data;
    struct Node *Next;
} *List;
List Read();//读入链表

int main()
{
List L1,L2,L3,LL3;
    L1=Read();
    L2=Read();
    L3=(List)malloc(sizeof(struct LNode));
    L3->Next=NULL;
    L3->Data=-1;
    LL3=L3;
    L1=L1->Next;
    L2=L2->Next;
	while(L1 && L2){//L1,L2均不为空
        if(L1->Data < L2->Data){//比较大小
            LL3->Next = L1;//L1当前结点数据较小则L1插入LL3
            L1 = L1->Next;//L1当前结点后移
        }else{//否则对L2进行操作
            LL3->Next = L2;
            L2 = L2->Next;
        }
        LL3 = LL3->Next;//LL3当前结点后移
    }
	while(L1){//若L2已空L1不空,把L1结点顺次插入LL3
        LL3->Next = L1;
        L1 = L1->Next;
        LL3 = LL3->Next;
    }
	while(L2){//否则对L2进行操作
        LL3->Next = L2;
        L2 = L2->Next;
        LL3 = LL3->Next;
    }
    int flag = 0;//判断是否已有数据输出
    L3 = L3->Next;//跳过头结点
    if(!L3) printf("NULL\n");//若之后有节点
    while(L3){//当L3不空时
        if(flag) printf(" ");//若之前已有元素输出则输出空格
        printf("%d",L3->Data);//输出L3当前数据
        flag = 1;//已有数据输出,把flag置1
        L3 = L3->Next;//当前结点后移
    }
	return 0;
}
    
List Read(){
	List L, tmp, LL;//L为用来返回的头结点,tmp为暂存当前数据的节点,LL为循环变量
	int Data;//暂存数据
	L = (List)malloc(sizeof(List));//分配空间,头结点初始化
	L->Next = NULL;
	L->Data = -1;
	LL = L;
	scanf("%d",&Data);//先读入第一个数据,若为-1则不必进行后续循环
	while(Data!=-1){
		tmp = (List)malloc(sizeof(List));//tmp分配空间
		tmp->Data = Data;//tmp数据为当前读入的数据
		tmp->Next = NULL;//tmp相当于链表最后一个结点,Next为空
		LL->Next = tmp;//tmp插入表尾
		LL = LL->Next;//当前结点后移
		scanf("%d",&Data);//读入下一个数据
	}
	return L;//返回头结点
}	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值