`
375809600
  • 浏览: 153417 次
  • 来自: 湖北
社区版块
存档分类
最新评论

3_两个链表的合并,去除重复节点

阅读更多
struct student{
	int num;
	struct student *pnext;

};
//首先将第二个链表的最后一个节点找到,然后将第一个链表的每一个节点依次跟第二个链表比较,如果第二个
//链表没有,就放到第二个链表的末尾



Stu *mergeTwoList(Stu *head,Stu *head1){
	Stu *last=head->pnext;
	Stu *head1_end=head1->pnext;
	Stu *last1=head1->pnext;
	Stu *head_pre=head->pnext;//循环保存last的前一个节点
	int flag=0;//初始化假设没有相等的
	while (head1_end->pnext!=NULL)
	{

		head1_end=head1_end->pnext;//用来保存head1的最后一个节点
	}
	while (last!=NULL)
	{
			last1=head1->pnext;//每次外层循环一次,就把里面的复位
		while (last1!=NULL)
		{
		
			if (last->num==last1->num)
			{
				flag=-1;
				break;
			}
			last1=last1->pnext;
		}
		if (flag==0)//没有相同的,加到
		{
          head_pre->pnext=last->pnext;
		  head1_end->pnext=last;
		  head1_end=head1->pnext;//往后一个节点,为了方便后面的添加
		  last->pnext=NULL;//将最后一个节点指向的下一个节点制为空
		}
		  head_pre=last;//记录head链表的前一个节点
		 last=last->pnext;
	}
	return head1;
}

 

分享到:
评论

相关推荐

    数据结构 合并链表 并去除重复数据.

    在本例中,我们将学习如何合并两个链表并去除重复数据。 合并链表是将两个或多个链表连接成一个链表的过程。合并链表可以使用多种算法,例如简单的连接算法、归并排序算法等。在本例中,我们使用了归并排序算法来...

    2_链表_求la和lb的交集_源码.zip

    4. **合并并去重法**:将la和lb合并为一个新的链表,同时去除重复节点,最后的节点就是交集。这种方法简单但效率较低,因为需要创建新的链表。 根据提供的源码,可能是以上某一种或多种方法的实现。源码的具体细节...

    链表的基本操作

    7. **链表并集**:链表的并集是将两个链表的所有元素合并到一个新的链表中,去除重复元素。可以先对链表进行排序,然后使用合并排序的方法,或者使用哈希集合来跟踪已添加的元素。 在实际编程中,链表操作的效率受...

    c++链表实现合,并,差

    我们可以先将两个链表合并,然后利用哈希集合(如`std::unordered_set`)来去除重复项: ```cpp ListNode* listUnion(ListNode* head1, ListNode* head2) { std::unordered_set<int> uniqueValues; ListNode* ...

    数据结构循环链表交集并集

    4. **并集操作**:对于并集,我们需要遍历两个链表,将每个元素添加到结果链表中,但需要注意去除重复元素。可以使用哈希表或者辅助链表来记录已添加的元素,避免重复。 5. **代码实现**:在提供的文件`循环链表A∪...

    数据结构 链表操作 C语言实现

    `Union`函数实现了两个链表的并集操作,将`ha`和`hb`链表合并成一个新链表`hc`,其中包含了两个原链表的所有不同元素以及相同的元素。 ```c void Union(LinkList* ha, LinkList* hb, LinkList*& hc) { // ... (省略...

    C#实现单链表的基本算法

    每个链表节点(也称为结点)包含两部分:数据域和指针域。数据域存储实际的元素值,指针域则存储指向下一个节点的引用。由于链表的节点可以任意位置插入或删除,这使得链表在处理动态数据时具有很大的灵活性。 在这...

    数据结构单链表C++语言的实现

    6. **求并集**:合并两个链表,同时去除重复元素,可以使用一个哈希集合(unordered_set)来记录已遍历过的元素,避免重复。 以下是一个简单的示例,演示如何在C++中实现这些操作: ```cpp // 合并链表 ListNode* ...

    【SEU 数据结构】Data Structure (2021 Spring) - Report for Assignment 3

    3. **无重复元素**:合并的两个链表La和Lb中元素没有重复,合并后的新链表Lc也不能包含重复元素。 4. **排序要求**:合并前的两个链表La和Lb已经是升序排列。 5. **时间复杂度与空间复杂度分析**:在完成合并任务后...

    字符串的逻辑运算.pdf

    `creat`函数用于创建链表,`Simple`函数用于简化链表(去除非字母字符和重复字符),`Judge`函数用于判断一个链表是否是另一个链表的子集,`Rang`函数用于将链表按字母顺序排列,`Union`函数实现两个链表的并运算,`...

    这是Kotlin语言版本的 Android 客户端本地化算法展示 Java 语言编写的面试算法_kotlin_代码_下载

    打印两个链表的公共部分 删除单链表和双链表倒数第K个节点 删除链表的中间节点和a/b处的节点 腕单向链表和链 部分单向链表 环形单链表的约瑟夫问题 一个鉴定链表是否为回文结构 将单向链某值分割成小表、送、按右边...

    C语言带报告两个程序带头节点的实现单链表两个集合二叉树对英文单词进行搜索统计次数

    3. **二叉树**:二叉树是一种特殊的树形数据结构,其中每个节点最多有两个子节点,通常分为左子节点和右子节点。在这个项目中,二叉树被用于按字母顺序高效地组织英文单词,便于搜索和统计。非递归遍历方法可能采用...

    link list doc

    一个链表是由一系列节点组成的,每个节点包含两部分:一部分存储实际的数据(称为数据域),另一部分则包含指向下一个节点的引用(称为链接域)。这种结构使得链表具有动态大小的特性。 1. **链表节点的定义**: -...

    实验二线性表及其应用III.docx

    通过比较两个链表中非空部分的指数,如果指数不等,系数较小的项复制到新节点,较大的继续与下一个节点比较。若指数相等,合并系数,若系数为零,则不创建新节点。 2. **多项式乘法运算**: 使用双层循环,遍历两...

    数据库模板

    - **合并**:将两个或多个有序链表合并成一个新的有序链表。 - **唯一化**:去除链表中的重复元素,保持链表中元素的唯一性。 **三、实验设计** 实验设计定义了单链表节点的结构以及相关函数的原型,节点包括一个...

    课程设计 - 数据结构 -112,113,115班题目要求

    ### 课程设计题目4:实现两个链表的合并 #### 设计目的 1. **掌握线性链表的建立**:学习构建链表的方法。 2. **掌握线性链表的基本操作**:熟练使用链表进行各种操作。 #### 设计内容和要求 - **建立两个链表A和B...

    集合的并交和差.pdf

    7. **集合的并运算**:`Union`函数实现了两个链表表示的集合的并集运算,通过遍历两个链表,将所有元素放入一个新的链表中,去除重复元素。 8. **集合的交运算**:未在报告中具体描述,但原理是遍历一个集合,检查...

    linkedlist problems

    对于合并操作,则需要考虑两个链表的排序情况。 总之,这份文档提供了一个全面且系统的链表学习框架,通过解决实际问题的方式,帮助读者深入理解和掌握链表的相关知识和技术。无论是对于初学者还是有一定经验的...

    LeetCode刷题题解答案(c++).pdf 彻底搞懂了编程算法题,成功拿到了大厂offer!

    新链表是通过拼接给定的两个链表的所有节点组成的。 - **解决方案**: - 使用递归或迭代的方法。 - 对于递归方法,比较两个链表的头结点,将较小的一个作为结果链表的头结点,然后递归地合并剩余的部分。 - 对于...

Global site tag (gtag.js) - Google Analytics