文章

11

粉丝

414

获赞

9

访问

101.9k

头像
有序链表合并(注释应该可以理解)
P1025 贵州大学2019机试
发布于2020年7月1日 20:30
阅读数 9.0k

//链表合并
#include<iostream>
#include<cstdlib>
using namespace std;

typedef struct lNode
{
	int data;
	struct lNode *next;
} *linkList;

//尾插法建立单链表
lNode* finCreatList(linkList &L, int n)//n代表建立链表的节点个数 
{
	//初始化头结点 
	L = (lNode*)malloc(sizeof(lNode));
	L->next = NULL;
	//s为新插入节点,r为尾节点
	lNode *s,*r;
	r = L;//r始终指向链表尾节点 
	while(n--)
	{
		int x; //x为新插入节点的指针域 
		cin >> x;
		s = (lNode*)malloc(sizeof(lNode));
		s->data = x;
		//节点插入
		r->next = s;
		r = s; 
	}
	r->next = NULL; //最后尾指针置为空 
	return L; 
} 

//链表输出
void outputLinkList(linkList L)
{
	lNode *p = L->next;
	while(p != NULL)
	{
		if(p->next != NULL)
			cout << p->data << " ";
		else
			cout << p->data;
		p = p->next;
	}
} 

//合并链表 
lNode* mergelist(linkList &L1,linkList &L2,linkList &L)
{
	lNode *p1,*p2;
	p1 = L1->next;
	p2 = L2->next;
	//借助另一个链表实现
	//为什么让L指向链表L2(指向L1也一样)因为要给L开辟一个空间,否则会召造成内存...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发