Die Sprache C implementiert die Zusammenführung zweier geordneter verknüpfter Listen (Codebeispiel).

青灯夜游
Freigeben: 2020-10-26 15:08:20
nach vorne
4062 Leute haben es durchsucht

In diesem Artikel werden Codebeispiele verwendet, um die Methode zum Zusammenführen zweier geordneter verknüpfter Listen mithilfe der c-Sprache vorzustellen. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Die Sprache C implementiert die Zusammenführung zweier geordneter verknüpfter Listen (Codebeispiel).

Empfohlenes Tutorial: „C-Sprach-Tutorial-Video

C-Sprache implementiert die Zusammenführung zweier geordneter verknüpfter Listen

Derzeit gibt es zwei geordnete einfach verknüpfte Listen, und die beiden werden durch kombiniert Code Das Zusammenführen einfach verknüpfter Listen in einer geordneten neuen Tabelle erfordert die Verwendung des Speicherplatzes der alten Tabelle und kann keinen neuen Speicher zuweisen

#include <stdio.h>#include <stdlib.h>typedef struct List{
	int a;
	struct List *next;}list;void newList(list *l){
	//初始化头节点
	l->next = NULL;}void setList(list * l){
	//建立链表
	int i = 1;
	int j;
	while (i)
	{
		scanf_s("%d", &j);
		if (j == -1)
		{
			i = 0;
		}
		else
		{
			list *l1 = (list *)malloc(sizeof(list));//为新的结点分派内存
			l1->a = j;//储存数据
			/*
			将最后结点的next区域指向新结点
			将新结点的next区域指向设置为空
			*/
			l->next = l1;
			l1->next = NULL;
			l = l->next;
		}
	}}void printfList(list *l){
	printf("该链表内容为:\n");
	while (l->next)
	{
		printf("%d\t", l->next->a);
		l = l->next;
	}
	printf("\n");}list *add(list *LA, list *LB){
	//记录两个链表的头结点
	list *la=LA;
	list *l = LA;
	list *lb = LB;
	//移动指针
	LA = LA->next;
	LB = LB->next;
	la->next = NULL;
	while (LA!=NULL&&LB!=NULL)
	{
		/*
		将两个结点的数据进行比较,数据较小的结点接在头结点后面,
		*/
		if (LA->a < LB->a)
		{
			la->next = LA;
			la = LA;
			LA = LA->next;
		}
		else
		{
			la->next = LB;
			la = LB;
			LB = LB->next;
		}
	}
	//若其中一个链表的结点已经全接在新表中则将另一个链表的剩余结点接在新表的后面
	if (LA)
	{
		la->next = LA;
	}
	if(LB)
	{
		la->next = LB;
	}
	free(lb);
	return l;}int main(){
	//为结点分配内存
	list *LA = (list *)malloc(sizeof(list));
	list *LB = (list *)malloc(sizeof(list));
	//初始化结点
	newList(LA);
	newList(LB);
	//建立链表
	setList(LA);
	setList(LB);
	//输出链表的内容
	printf("LA的数据:\n");
	printfList(LA);
	printf("LB的数据:\n");
	printfList(LB);
	list *LC = add(LA, LB);
	//输出合并后的新表
	printfList(LC);
	system("pause");
	return 0;}
Nach dem Login kopieren

Die Sprache C implementiert die Zusammenführung zweier geordneter verknüpfter Listen (Codebeispiel).

Weitere Kenntnisse im Zusammenhang mit der Programmierung finden Sie unter: Einführung in die Programmierung! !

Das obige ist der detaillierte Inhalt vonDie Sprache C implementiert die Zusammenführung zweier geordneter verknüpfter Listen (Codebeispiel).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage