链表求差

链表指针参数和逻辑的分析。

//已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。
//例如,若集合A = { 5, 10, 20, 15, 25, 30 },集合B = { 5, 15, 35, 25 },完成计算后A = { 10, 20, 30 }。

#include<stdio.h>
#include<stdlib.h>
struct node
{
    int elem;
    node* next;
};

void difference(node** LA, node* LB)
{
    node *pa, *pb, *pre, *q;
    pre = nullptr;
    pa = *LA; //1
    while (pa)
    {
        pb = LB;
        while (pb&&pb->elem!=pa->elem)   //2
            pb = pb->next;
        if (pb)    //不为空,说明有相同的,为空即没有相同的
        {
            if (!pre)  //为空
                *LA = pa->next;     //4
            else
                *LA = pre->next;     //5
            q = pa;
            pa = pa->next;
            free(q);
        }
        else
        {
            pre=pa;             //6
            pa = pa->next;
        }
    }
}
时间: 2024-10-10 12:35:01

链表求差的相关文章

数据结构&gt;&gt;线性表【注意】--&gt;链表求A-B(原A与B都递增,求完的A-B不改变A原来的顺序)

/*关于链表的题目 * A.B是两个递增有序的单链表,元素个数分别是m和n,求 * 集合A-B,并将结果保存在A中,且仍然保持递增有序. * converge_ab */ #include <iostream.h> using namespace std; typedef struct lnode{ int data; struct lnode * next; }lnode; int main(){ lnode * create_chain(int num,int interval,int s

hiho #1305 区间求差

#1305 : 区间求差 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个区间集合 A 和 B,其中集合 A 包含 N 个区间[ A1, A2 ], [ A3, A4 ], ..., [ A2N-1, A2N ],集合 B 包含 M 个区间[ B1, B2 ], [ B3, B4 ], ..., [ B2M-1, B2M ].求 A - B 的长度. 例如对于 A = {[2, 5], [4, 10], [14, 18]}, B = {[1, 3], [8,

linux_coom _ Linux文件比较,文本文件的交集、差集与求差

交集和差集操作在集合论相关的数学课上经常用到,不过,在Linux下 对文本进行类似的操作在某些情况下也很有用. comm命令 comm命令可以用于两个文件之间的 比较,它有一些选项可以用来调整输出,以便执行交集.求差.以及差集操作. 交集:打印出两个文件所共有的行. 求差:打印出指定文件所包含的且不相同的行. 差集:打印出包含在一个文件中,但不包含在其他指定文件中的行. [[email protected] text]# cat aaa.txt aaabbbcccdddeee111222 [[e

Linux文件比较,文本文件的交集、差集与求差

comm命令 comm命令可以用于两个文件之间的比较,它有一些选项可以用来调整输出,以便执行交集.求差.以及差集操作.•交集:打印出两个文件所共有的行.•求差:打印出指定文件所包含的且不相同的行.•差集:打印出包含在一个文件中,但不包含在其他指定文件中的行.[[email protected] text]# cat aaa.txtaaabbbcccdddeee111222[[email protected] text]# cat bbb.txtbbbcccaaahhhtttjjj[[email 

第二十二章 Linux文件比较,文本文件的交集、差集与求差:comm命令

第二十二章 Linux文件比较,文本文件的交集.差集与求差:comm命令 名词解释 comm 命令 可以用于两个文件之间的比较,它有一些选项可以用来调整输出,以便执行交集.求差.差集操作. 交集:打印两个文件所共有的行 求差:打印出指定文件所包含的其不相同的行. 差集:打印出包含在一个文件中,但不包含在其他指定文件中的行. 语法 comm(选项)(参数) 选项 -1 :不显示在第一个文件出现的内容: -2 :不显示在第二个文件中出现的内容: -3 :不显示同时在两个文件中都出现的内容. ? 参数

C/C++,数据结构实现两个链表的合并(尾插法建立单链表,求链表长度,直接插入排序)

1题目 实现两个链表的合并 2基本功能要求: 1.建立两个链表A和B,链表元素个数分别为m和n个. 2.假设元素分别为(x1,x2,-xm),和(y1,y2, -yn).把它们合并成一个线性表C,使得: 当m>=n时,C=x1,y1,x2,y2,-xn,yn,-,xm 当n>m时,C=y1,x1,y2,x2,-ym,xm,-,yn 3.输出线性表C: 用直接插入排序法对C进行升序排序,生成链表D,并输出链表D. 3测试数据: (1)A表(30,41,15,12,56,80) B表(23,56,

两个集合求差

需求:从两个不同历史版本的数据库提取出相同的表数据(多个表)进行差异对比. 实施:使用集合的Except扩展方法 过程:开始想的是写代码循环比较差异,但是代码写起来比较繁琐,后来发现集合有一个Except扩展方法正是用来实现求差集的. 部分代码如下 EnumerableRowCollection<HtRefInfo> hta; EnumerableRowCollection<HtRefInfo> htb; hta = DalA.LoadHt(ids); htb = DalB.Loa

【练习5.4】图像求差及膨胀腐蚀

提纲 题目要求 程序代码 结果图片 题目要求: 拍两幅图片,两幅图片的拍摄位置略有不同,分别命名为src1和src2 a.将src1减去src2并求绝对值,记为diff12,理想情况下,diff12将使黑色 b.对diff12先腐蚀后膨胀 c.对diff12先膨胀后腐蚀 d.解释c和d结果图片的区别 程序代码: 1 // OpenCVExerciseTesting.cpp : 定义控制台应用程序的入口点. 2 // 3 //D:\\Work\\Work_Programming\\Source\\

数据库筛选用户,然后去掉一部分(列表求差),再随机返回一个用户。sqlalchemy + python集合(set) + random

sqlalchemy和flask-sqlalchemy之间的东西不是太清晰. sqlalchemy文档太他妈多了,日. 今天遇到的实例. 用户进行随机匹配,系统随机返回一个一定筛选条件下的用户.为了用户体验,还得去掉已关注的人. 首先获取满足筛选条件的用户列表: users = User.query.filter_by(school=form.school.data, sex=form.sex.data, status=form.status.data).all() 且要获取已关注用户列表: f