栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言学习---输入两个有序链表,合并两个有序链表并重新排序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言学习---输入两个有序链表,合并两个有序链表并重新排序

#pragma warning(disable:4996)
#include
#include

#define LEN sizeof(STU)

typedef struct stu
{
	int num;
	int score;
	struct STU* next;
}STU;

int main()
{
	STU *creat();
	STU* insert(STU * ah, STU * bh);
	void print(STU  *abh);
	STU* ahead, * bhead,  *abh;

	printf("请输入第一组链表:n");
	ahead = creat();
	print(ahead);

	printf("请输入第二组链表:n");
	bhead = creat();
	print(bhead);
#if(1)
	abh = insert(ahead, bhead);
	printf("合并后的链表为:n");
	print(abh);
#endif
}

//创建链表的部分
STU* creat()
{
	STU* head, * p1, * p2;
	int n;
	head = NULL;
	p2 = p1 = (STU*)malloc(LEN);
	printf("请输入学号和成绩,以学号为0结束:n");
	scanf("%d %d", &p1->num, &p1->score);
	while (p1->num != 0)
	{
		if (head == NULL)
		{
			head = p1;
		}
		else
		{
			p2 = p1;
			p1 = (STU*)malloc(LEN);
			scanf("%d %d", &p1->num, &p1->score);
			p2->next = p1;
		}
	}
	p1->next = NULL;
	return head;
}

void print(STU* abh)
{
	printf("NUM		Scoren");
	do
	{
		printf("%-11d %-11dn", abh->num, abh->score);
		abh = abh->next;
	} while (abh->next != NULL);
	return 0;
}

STU* insert(STU* ah, STU* bh)
{
	STU* pa1, * pa2, * pb1, * pb2;
	pa2 = pa1 = ah;
	pb2 = pb1 = bh;
	do
	{
		while (pb1->num > pa1->num && pa1->next != NULL)
		{
			pa2 = pa1;
			pa1 = pa1->next;//若当前B组两个指针指向的的num 大于 A组尾部num,则将A组两个指针平移
		}
		if (pb1->num < pa1->num)//当出现B组两个指针指向的num小于A组尾部时。。。
		{
			if (pa1 == ah)//若为A组头指针大于B组头指针,则直接将A组头指针指向B组开头
			{
				ah = pb1;
			}
			else
			{					//pa1,pa2分别指向A组中一前一后两个元素
				pa2->next = pb1;
				pb1 = pb1->next;
				pb2->next = pa1;
				pa2 = pb2;
				pb2 = pb1;		//pb1=pb2,即B组两个指针在开始比较之前总是指向同一个元素
			}
		}
	} while ((pa1->next != NULL) || (pb1->num > pa1->num && pb1 != NULL));
	if ((pb1 != NULL) && (pb1->num > pa1->num) && (pa1->next == NULL))//当A组两个指针指向了最后两个指针,且B组两个指针不指向空,这直接首尾相连
	{
		pa1->next = pb1;
	}
	return ah;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330261.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号