首页 > 其他分享 >求两个链表差集

求两个链表差集

时间:2023-11-19 17:55:04浏览次数:32  
标签:p2 p1 两个 list 差集 next 链表 L2 L1

一、题目

什么是差集

对于集合A = {a, b, c, d}和集合B = {b, c, w},则A与B 的差集为

二、我的解答(所求的是L1-L2)

list* p1=L1->next;//指向L1链表的指针p1
List* p2=L2->next;//指向L2链表的指针p2

思想:若p1和p2指向空间的数据域的值相等,则两指针向后移动,如果不等且p1<p2,那么L1的这个元素必定不在L2中(因为链表元素递增),如果p1>p2,则需要去比较p1和p2的下一位置。

list* exception(list* L1,list* L2) { //L1-L2
	if (!L1 || !L2) return L1;
	list* p1 = L1->next, * p2 = L2->next, * p3 = L1;
	while (p1 && p2) {
		if (p1->value == p2->value) {
			p1 = p1->next;
			p2 = p2->next;
		}
		else if (p1->value < p2->value) {
			p3->next = p1;
			p3 = p1;
			p1 = p1->next;
		}
		else
			p2 = p2->next;
	}
	p3->next = p1 ? p1 : NULL;
	free(L2);
	return L1;
}

标签:p2,p1,两个,list,差集,next,链表,L2,L1
From: https://www.cnblogs.com/cony1/p/17842345.html

相关文章

  • 求有序链表交集
    一、题目二、我的解答思想:因为递增有序,所以两个指针依次遍历,这次就不考虑相等的情况了,默认为严格递增。list*intersection(list*L1,list*L2){ if(!L1||!L2)returnNULL; list*p1=L1->next,*p2=L2->next,*p3=L1; while(p1&&p2){ if(p1->value==......
  • 合并有序链表
    一、题目二、代码1.思想:将情况分为三种,大于和小于简单的合并,相等的时候需要额外考虑一些问题哪些问题?1.新表指针如何移动2.两个子表指针如何移动相等的时候,需要考虑新表指针的如何操作,当新表中已经存在,两个子表指针目前所指节点的值,就只需将两个子表中重复的元素略过,......
  • C语言基础实例:两个整数相加
    使用 scanf() 来接收输入, printf() 与 %d 格式化输出整数。运行实例实例#include<stdio.h>intmain(){ intfirstNumber,secondNumber,sumOfTwoNumbers;printf("输入两个数:"); scanf("%d%d",&firstNumber,&secondNumber);sumOfTwoNumbers=fir......
  • 两两交换链表中的节点
    现在时间是:  2023年11月18日 星期六   农历十月初六  22:08:每天坚持刷Leetcode,遇到有些突然看到就不能想得很清楚的题目,还是需要进行记录一下!Leetcode热题100(学习计划):两两交换链表中的节点,题目信息如下:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节......
  • 206. 反转链表 (精选)
    2023-11-18206.反转链表-力扣(LeetCode)思路:注意leetcode是没有头节点的,只有数据节点1先将指针放到最后,然后从开头取节点,放到此节点后面遍历2遍,不好2引入头节点,头插法可以就用本来的链表/定义一个新的链表3原地反转链表的线迭代(双指针)递归相当于1的思路1简单,就......
  • 【HDU 1276】士兵队列训练问题 题解(链表+模拟)
    某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至......
  • java中两个日期比大小
    SimpleDateFormatslf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Datedate=newDate();Datedate1=null;Stringd="2023-1-111:11:11";try{date1=slf.parse(d);}ca......
  • 代码随想录算法训练营第六天 |● 哈希表理论基础 ● 242.有效的字母异位词 ● 349.
    今日学习的文章链接和视频链接https://programmercarl.com/哈希表理论基础.html242.有效的字母异位词varisAnagram=function(s,t){if(s.length!==t.length)returnfalseletmap=newMap();for(letcharofs){if(!map.get(char)){......
  • 电脑同时配置JDK8和JDK17两个版本
    1,下载JDK17https://www.oracle.com/java/technologies/downloads/#java17下载zip版本,解压后新建一个jre目录win+rcmdsysmd.cpl2,在系统变量中设置要用JDK17时,就将JAVA_HOME=%JAVA_HOME8%改为JAVA_HOME=%JAVA_HOME17%3,双击Path编辑环境变量小知识如果把以%......
  • (链表)16-删除有序链表中重复的元素-b
    1importjava.util.*;23/*4*publicclassListNode{5*intval;6*ListNodenext=null;7*publicListNode(intval){8*this.val=val;9*}10*}11*/12publicclassSolution{13/**14*@paramhead......