zoukankan      html  css  js  c++  java
  • 链表合并

    #include <stdio.h>
    #include <malloc.h>
    
    typedef struct LNode{		//定义结构体 
    	int data;
    	struct LNode *next;
    }Node,*LinkList;
    
    void InitList(LinkList &);	//初始化链表 
    void output(LinkList);	//遍历链表 
    void merge(LinkList & , LinkList &);	//合并链表 
    
    int main(void){
    	LinkList L;
    	printf("请输入第一个链表(输入-1表示结束):");
    	InitList(L);
    	output(L);
    	
    	LinkList S;
    	printf("请输入第二个链表(输入-1表示结束):");
    	InitList(S);
    	output(S);
    	
    	merge(L,S);
    	
    	return 0;
    }
    
    void InitList(LinkList &L){		//初始化链表 
    	L = (Node*)malloc(sizeof(Node));
    	L->next = NULL;
    	int e;
    	Node *p = L;
    	scanf("%d",&e);
    	while(e != -1){
    		Node *s = (Node*)malloc(sizeof(Node));
    		s->data = e;
    		s->next = p->next;
    		p->next = s;
    		p = s;
    		scanf("%d",&e);
    	}
    }
    
    void output(LinkList L){	//遍历链表 
    	Node *p = L->next;
    	printf("当前链表是:");
    	while(p != NULL){
    		printf("%d ",p->data);
    		p = p->next;
    	}
    	printf("
    ");
    }
    
    void merge(LinkList &L , LinkList &S){		//合并链表 
    	Node *La = L->next;
    	Node *Ls = S->next;
    	LinkList C = L;
    	Node *Lc = L;
    	while(La != NULL && Ls != NULL){
    		if(La->data <= Ls->data){
    			Lc->next = La;
    			Lc = La;
    			La = La->next;
    		}else{
    			Lc->next = Ls;
    			Lc = Ls;
    			Ls = Ls->next;
    		}
    	}
    	if(La != NULL){
    		Lc->next = La;
    	}
    	if(Ls != NULL){
    		Lc->next = Ls;
    	}
    	free(S);
    	output(C);
    }
    
  • 相关阅读:
    Java之IO(一)InputStream和OutputStream
    bitset库
    assert
    C++ 与 Python 混合编程
    C++多线程
    C++11新特性
    C++性能优化指南
    C++随机数
    C++中struct与class的区别
    C++杂记
  • 原文地址:https://www.cnblogs.com/Timesi/p/12756212.html
Copyright © 2011-2022 走看看