当前位置:   article > 正文

c语言----将两个有序链表合并成一个有序链表_两个有序链表合并成一个新有序链表c语言

两个有序链表合并成一个新有序链表c语言
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MAXSIZE 100
struct node {
	struct node *next;
	int data;
};
int main(){
//定义链表
 	struct node *p,*h1,*h2,*q;
 	int n1,n2;
 	h1=(struct node *)malloc(sizeof(struct node));
 	h2=(struct node *)malloc(sizeof(struct node));
 	scanf("%d ",&n1);
 	q=h1;
 	for(int i=0;i<n1;i++){
 		p=(struct node *)malloc(sizeof(struct node));
 		scanf("%d",&p->data);
 		q->next=p;
 		q=p;
	 }
	 q->next=NULL;
	 
	 
	scanf("%d ",&n2);
 	q=h2;
 	for(int i=0;i<n2;i++){
 		p=(struct node *)malloc(sizeof(struct node));
 		scanf("%d",&p->data);
 		q->next=p;
 		q=p;
	 }
	 q->next=NULL;
	 
//合并链表为一个有序链表 
	 struct node *h3,*z;
	 h3=(struct node *)malloc(sizeof(struct node));
	 p=h1->next;
	 q=h2->next;
	 z=h3;
	 while(p&&q){
	 	if(p->data<q->data){
	 		z->next=p;
	 		z=p;
	 		p=p->next;
	 		z->next=NULL;
		 }
		 else{
		 	z->next=q;
		 	z=q;
		 	q=q->next;
		 	z->next=NULL;
		 }
	 }
	 if(q==NULL){
	 	z->next=p;
	 }
	 if(p==NULL){
	 	z->next=q;
	 }

	 
//输出h3 
	 printf("\n"); 
	 q=h3->next;
	 while(q){
	 	printf("%d ",q->data);
	 	q=q->next;
	 }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/cp456/article/detail/62960
推荐阅读
相关标签
  

闽ICP备14008679号