迅雷2014校招笔试编程题——求解两个集合差集,集合是以单向链表存储

本文主要是介绍迅雷2014校招笔试编程题——求解两个集合差集,集合是以单向链表存储,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述:

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

  1. struct node    
  2. {    
  3.     int elem;    
  4.     node* next;    
  5. };    
请完成函数void difference(node** LA , node* LB)

分析:这道题是以程序填空的形式出现。考点是:1链表的建立,链表的遍历、删除。2思路逻辑分析;

// DifferenceBetweenTwoSETs.cpp : 定义控制台应用程序的入口点。
/*@mishidemudong@2015-5-26*/
//#include "stdafx.h"
#include<stdlib.h>
#include<iostream>
using namespace std;
struct node
{int elem;node* next;
};void printList(node * Node)
{while (Node != NULL){printf("%d ", Node->elem);Node = Node->next;}
}void DestroyList(node *L)
{node *p, *q;p = q = L;while (p != NULL) {q = q->next;free(p);p = q;}
}void difference(node **LA, node *LB)
{node *pa, *pb, *pre, *q;pre = NULL;pa = *LA;while (pa){pb = LB;while (pb&&pb->elem!=pa->elem){pb = pb->next;}if (pb){if (!pre)*LA = pa->next;elsepre->next = pa->next;q = pa;pa = pa->next;free(q);}else{pre = pa;pa = pa->next;}}
}void CreateList(node* &L, int *Number,int length)
{L = new node;L->elem = Number[0];L->next = NULL;node *p=L;<span style="white-space:pre">	</span>//注意*p=L;
<span style="white-space:pre">					</span>for (int i = 1; i < length; i++){node *newNode = (node *)malloc(sizeof(node));<span style="white-space:pre">	</span>//分配新的结点newNode->elem = Number[i];newNode->next = NULL;<span style="white-space:pre">			</span>p->next = newNode;<span style="white-space:pre">				</span>//尾插法,链接到链表尾部。p = newNode;}
}int _tmain(int argc, _TCHAR* argv[])
{int A[6] = { 5, 10, 20, 15, 25, 30 };int B[4] = { 5, 15, 35, 25 }; node *LA = NULL;node *LB=NULL;CreateList(LA, A,6);CreateList(LB, B, 4);printList(LA);cout << endl;printList(LB);cout << endl;difference(&LA, LB);printList(LA);return 0;
}


这篇关于迅雷2014校招笔试编程题——求解两个集合差集,集合是以单向链表存储的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/968020

相关文章

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

csu1329(双向链表)

题意:给n个盒子,编号为1到n,四个操作:1、将x盒子移到y的左边;2、将x盒子移到y的右边;3、交换x和y盒子的位置;4、将所有的盒子反过来放。 思路分析:用双向链表解决。每个操作的时间复杂度为O(1),用数组来模拟链表,下面的代码是参考刘老师的标程写的。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

深入手撕链表

链表 分类概念单链表增尾插头插插入 删尾删头删删除 查完整实现带头不带头 双向链表初始化增尾插头插插入 删查完整代码 数组 分类 #mermaid-svg-qKD178fTiiaYeKjl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-

ZOJ Monthly, August 2014小记

最近太忙太忙,只能抽时间写几道简单题。不过我倒是明白要想水平提高不看题解是最好的了。 A  我只能死找规律了,无法证明 int a[50002][2] ;vector< vector<int> > gmax , gmin ;int main(){int n , i , j , k , cmax , cmin ;while(cin>>n){/* g

2014 Multi-University Training Contest 8小记

1002 计算几何 最大的速度才可能拥有无限的面积。 最大的速度的点 求凸包, 凸包上的点( 注意不是端点 ) 才拥有无限的面积 注意 :  凸包上如果有重点则不满足。 另外最大的速度为0也不行的。 int cmp(double x){if(fabs(x) < 1e-8) return 0 ;if(x > 0) return 1 ;return -1 ;}struct poin

2014 Multi-University Training Contest 7小记

1003   数学 , 先暴力再解方程。 在b进制下是个2 , 3 位数的 大概是10000进制以上 。这部分解方程 2-10000 直接暴力 typedef long long LL ;LL n ;int ok(int b){LL m = n ;int c ;while(m){c = m % b ;if(c == 3 || c == 4 || c == 5 ||