实验数据结构(保存了两日内书面实验报告) 列表中的整合

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介:

huangjing

列表中的整合,要求O(la*lb)复杂性。实际插入是什么。需要注意的是,在特殊情况下的列表的开始和结束的假设

代码

#include<cstdio>
#include<cstring>
#include<cstdlib>

typedef struct node
{
	int data;
	struct node *next;
}Node,*listnode;

int lena,lenb;

void creatlist(listnode &head,int flag)
{
	int x=1;
	listnode p,xx;
    head->next=NULL;
	xx=head;
	while(x!=0)
	{
		p=(listnode)malloc(sizeof(struct node));
        scanf("%d",&x);
		if(x==0)  break;
		if(flag)
			lena++;
		else
			lenb++;
		p->data=x;
		p->next=NULL;
		xx->next=p;
		xx=p;
	}
}//创建链表

void forlist(listnode &head)
{
    listnode p;
	p=head->next;
	while(p!=NULL)
	{
        printf("%d ",p->data);
		p=p->next;
	}
}//遍历链表

void Insert(listnode &la,int val)
{
	listnode p,last,cur;
	p=la->next;
	last=p;
	cur=(listnode)malloc(sizeof(node));
    cur->data=val;
    if(p->data>val)
    {
       cur->next=p;
       la->next=cur;
       return;
    }
	while(p->data<val)
	{
		last=p;
		p=p->next;
		if(p==NULL)  break;
	}
    cur->next=p;
    last->next=cur;
}

void unionlist(listnode &la,listnode &lb)
{
	int flag;
	listnode xx,yy;
	yy=lb->next;
    for(int i=1;i<=lenb;i++)
	{
		flag=0;
        int key=yy->data;
		yy=yy->next;
		xx=la->next;
		for(int j=1;j<=lena;j++)
		{
			if(xx->data==key)
			 {
				 flag=1;
				 break;
			 }
			 else
				 xx=xx->next;
		}
		if(!flag)
		{
			Insert(la,key);
			lena++;
		}
	}
}//合并链表

int main()
{
	lena=lenb=0;
    listnode heada,headb;
	heada=(listnode)malloc(sizeof(struct node));
    headb=(listnode)malloc(sizeof(struct node));
	creatlist(heada,1);
	creatlist(headb,0);
	printf("链表la长度 lb长度:%d %d\n",lena,lenb);
	printf("链表ha为");
	forlist(heada);
	printf("\n");
	printf("链表hb为");
	forlist(headb);
	printf("\n");
    unionlist(heada,headb);
	printf("合并后的链表:\n");
    forlist(heada);
    printf("\n");
	forlist(headb);
	return 0;
}


/*
3 4 6 18  0
2 3 5 6 7 19 20 0
*/


版权声明:本文博客原创文章,博客,未经同意,不得转载。





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4709251.html,如需转载请自行联系原作者


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
存储 算法 编译器
数据结构实验之矩阵的运算器(二维数组)
本实验旨在通过团队合作,掌握数组和矩阵相关运算的代码实现,包括矩阵的加减、数乘、转置、乘法、n次方及行列式的计算。实验过程中,成员们需分工协作,解决编程难题,最终实现一个功能完备的矩阵计算器。通过本实验,不仅锻炼了编程能力,还加深了对数学概念的理解,同时培养了团队合作精神。
72 4
|
2月前
数据结构实验之串模式匹配问题
本实验旨在掌握串模式匹配技术,通过创建文本文件、实现单词计数与定位功能,最终构建一个包含文件建立、单词统计与定位、程序退出等选项的主菜单,以增强对字符串处理的理解与应用能力。
62 4
|
2月前
|
算法
数据结构实验之最长公共子序列
本实验旨在通过编程实践帮助学生理解串的基本概念及求解最长公共子序列的算法。实验内容包括使用动态规划方法设计并实现算法,以找出给定两序列的最大公共子序列。示例代码展示了如何通过构建状态矩阵和回溯路径来找到解决方案。实验总结指出,`memset()`函数用于内存初始化,且对于特定输入,程序能正确输出最长公共子序列之一。
61 4
|
2月前
|
算法
数据结构实验之操作系统打印机管理器问题
本实验旨在通过实现操作系统中的打印机管理器问题,掌握队列的基本操作如入队、出队等,利用队列的先进先出特性解决先申请先打印的问题。实验包括队列的初始化、入队、出队、打印队列内容等功能,并通过菜单式界面进行交互。实验结果显示基本功能可正常执行,但在连续操作时存在执行失败的情况,需进一步优化。
50 4
|
2月前
|
存储 算法 Perl
数据结构实验之链表
本实验旨在掌握线性表中元素的前驱、后续概念及链表的建立、插入、删除等算法,并分析时间复杂度,理解链表特点。实验内容包括循环链表应用(约瑟夫回环问题)、删除单链表中重复节点及双向循环链表的设计与实现。通过编程实践,加深对链表数据结构的理解和应用能力。
65 4
|
2月前
|
机器学习/深度学习 存储 算法
数据结构实验之二叉树实验基础
本实验旨在掌握二叉树的基本特性和遍历算法,包括先序、中序、后序的递归与非递归遍历方法。通过编程实践,加深对二叉树结构的理解,学习如何计算二叉树的深度、叶子节点数等属性。实验内容涉及创建二叉树、实现各种遍历算法及求解特定节点数量。
101 4
|
2月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
61 4
|
2月前
|
存储 NoSQL Redis
Redis常见面试题:ZSet底层数据结构,SDS、压缩列表ZipList、跳表SkipList
String类型底层数据结构,List类型全面解析,ZSet底层数据结构;简单动态字符串SDS、压缩列表ZipList、哈希表、跳表SkipList、整数数组IntSet
|
3月前
|
存储 索引 Python
python数据结构之列表详解
列表是Python中极为灵活和强大的数据结构,适合于存储和操作有序数据集合。掌握其基本操作和高级特性对于编写高效、清晰的Python代码至关重要。通过本回答,希望能帮助你全面理解Python列表的使用方法,从而在实际编程中更加游刃有余。
43 0
|
3月前
|
算法
计科一二班算法数据结构实验9答案
计科一二班算法数据结构实验9答案
22 0