文章

2

粉丝

0

获赞

2

访问

174

头像
链表合并
C语言
发布于2025年7月12日 19:12
阅读数 104

 

给定两个元素有序(从小到大)的链表,要求将两个链表合并成一个有序(从小到大)链表。

题目链接

http://www.noobdream.com/DreamJudge/Issue/page/1025/ 

#include <bits/stdc++.h>
using namespace std;

typedef struct node{
	int val;
	struct node *next;
}node;

node *append(node *head,int x){
	//创一个新的node内存
	node *newnode=(node *) malloc(sizeof(node));
	newnode->val=x;
	newnode->next=NULL;
	//空链接/非空指针后移找最后一个
	if(!head) return newnode;
	node *p=head;
	while(p->next) p=p->next;
	p->next=newnode;
	return head; //返回的是链表的head(已经在最后加上了一个node)
}

node *meg(node *l1,node *l2){
	node dummy={0,NULL}; //设置一个哨兵
	node *tail=&dummy;   //以tail来制作一个新的链
	while(l1 && l2){
		if(l1->val < l2->val){
			tail->next=l1;
			l1=l1->next;
		}
		else{
			tail->next=l2;
			l2=l2->next;
		}
		tail=tail->next; // 移动 tail 指针
	}
	tail->next = (l1 ? l1 : l2);   // 把剩余未遍历完的链表直接接上
	return dummy.next;
}

void print_list(node *head){
	if (!head) retu...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发