zoukankan      html  css  js  c++  java
  • 有序表的合并---链表实现

    /*
            类似力扣21题
    	有序表的合并---用链表实现 
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    
    typedef int ElemType;
    typedef struct Lnode{
    	ElemType data;
    	struct Lnode * next;
    }LNode, * LinkList;
    
    
    void CreateList_R(LinkList * L){
    	int len;
    	printf("请输入要创建的链表节点个数:");
    	scanf("%d", &len);
    	*L = (LinkList)malloc(sizeof(LNode) * len);
    	int i;
    	int val;
    	LinkList r;
    	r = *L;
    	for(i = 0; i < len; i++){
    		printf("请输入第%d个节点存入的值:
    ", i + 1);
    		scanf("%d", &val);
    		LinkList s = (LinkList)malloc(sizeof(LNode)); 
    		s->data = val;
    		s->next = NULL;
    		r->next = s;
    		r = s;
    	}
    }
    
    void traverse_list(LinkList L){
    	LinkList p = L->next;
    	while(p){
    		printf("%d ", p->data);
    		p = p->next;
    	}
    }
    
    /*
    	有序表合并---用链表实现 
    */
    LinkList MergeList_L(LinkList  La, LinkList  Lb){
    	LinkList  Lc;
    	LinkList pa = La->next;
    	LinkList pb = Lb->next;
    	Lc = La;
    	LinkList pc = La;
    	while(pa && pb){
    		if(pa->data <= pb->data){
    			pc->next = pa;
    			pc = pa;
    			pa = pa->next;
    		}else{
    			pc->next = pb;
    			pc = pb;
    			pb = pb->next;
    		}
    	}
    	pc->next = pa?pa:pb;
    	free(Lb);	
    	return Lc;
    }
    int main(){
    	LinkList La;
    	LinkList Lb;
    	LinkList Lc;
    	CreateList_R(&La);
    	CreateList_R(&Lb); 
    	
    	Lc = MergeList_L(La, Lb);
    	traverse_list(Lc);
    	return 0;
    } 
    
    我亦无他,惟手熟尔
  • 相关阅读:
    2021.01.28 Rating赛
    2021.01.23 Rating赛补题报告
    Codeforces Round #104 (Div.2)补题报告
    Codeforces Beta Round #73(Div2)补题报告
    11.28天梯赛补题报告
    11月22日天梯训练补题报告
    11.14补题报告
    CCNA笔记
    Centos上安装mysql配置并授权远程连接部署项目
    web容器(03):Nginx配置负载均衡
  • 原文地址:https://www.cnblogs.com/AsuraPlus/p/15415689.html
Copyright © 2011-2022 走看看