收藏 分销(赏)

Java集合并交差运算.doc

上传人:w****g 文档编号:10820698 上传时间:2025-06-18 格式:DOC 页数:7 大小:70.01KB 下载积分:6 金币
下载 相关 举报
Java集合并交差运算.doc_第1页
第1页 / 共7页
Java集合并交差运算.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
一、题目要求: 用Java语言实现单链表的基本操作,并实现集合的交、并和差运算。 二、程序功能定义: 1、输出两个集合的交集,即找出两个集合的相同元素。 2、输出两个集合的并集,即把两个集合的全部元素不重复的加起来。 3、输出两个集合的差集,即从一个集合中找出另一个集合里没有的元素。 三、设计思路: 程序1:单链表结点 public class Node<T> //单链表结点类,T指定结点的元素类型 { public T data; //数据域,保存数据元素 public Node<T> next; //地址域,引用后继结点 public Node(T data, Node<T> next) //构造结点,data指定数据元素,next指定后继结点 { this.data = data; this.next = next; } public Node() { this(null, null); } } 程序2: import java.util.ArrayList; public class SinglyList<T> { public Node<T> head; public int length; //以上为默认构造方法,构造空单链表 public static ArrayList<String> union=new ArrayList<String>(); public SinglyList() { this.head = new Node<T>(); } //以上为构造单链表 public SinglyList(T[] element) { this(); //创建空单链表,只有头结点 this.length = element.length; Node<T> rear = this.head; //rear指向单链表最后一个结点 for (int i = 0; i < element.length; i++) //若element==null,跑出空对象异常;element.length==0时,构造空链表 { rear.next = new Node<T>(element[i], null); //创建结点链入rear结点之后 rear = rear.next; //rear指向性的链尾结点 } } public String toString() { String str = "("; Node<T> p = this.head.next; while (p != null) { str += p.data.toString(); if (p.next != null) { str += ","; } //不是最后一个结点时,后加分隔符 p = p.next; } return str + ")"; //空表返回() } public String addAll(SinglyList list) { Node<T> p = this.head.next; String str = "("; while (p != null) { Node<T> q = list.head.next; while (q != null) { if ( p.data.toString().equals(q.data.toString())) //集合的元素值相等 { if (!str.equals("(")) { str += ","; } //用逗号间隔 str += p.data.toString(); this.union.add(p.data.toString()) ; } q = q.next; } p = p.next; } return str + ")"; } //以上为求交集过程。 public String union(SinglyList list) { Node<T> p = this.head.next; String str = "("; while (p != null) { Node<T> q = list.head.next; int i = 0; while (q != null) { if (!p.data.toString().equals(q.data.toString())) { i++; if (i == list.length) { for(int a=0;a<union.size();a++) { if( !p.data.toString().equals(union.get(a))&a==union.size()-1) { if (!str.equals("(")) str += ","; str += p.data.toString(); } } } } q = q.next; } p = p.next; i = 0; } Node<T> w = list.head.next; while (w != null) { str += ","; str += w.data.toString(); w = w.next; } return str + ")"; } //以上为求并集过程。 public String difference(SinglyList list) { Node<T> p = this.head.next; String str = "("; while (p != null) { Node<T> q = list.head.next; int i = 0; while (q != null) { if ( !p.data.toString().equals(q.data.toString())) { i++; if (i == list.length) { if (!str.equals("(")) str += ","; str += p.data.toString(); } } q = q.next; } p = p.next; i = 0; } return str + ")"; } } //以上为求差集过程。 程序3: import java.util.Scanner; public class MainClass { public static void main(String[] args) { int a, b; Scanner cin = new Scanner(System.in); System.out.print("请输入集合A的元素(用英文逗号间隔):"); String a_string=cin.nextLine(); String[] suma=a_string.split(","); System.out.print("请输入集合B的元素(用英文逗号间隔):"); String b_string=cin.nextLine(); String[] sumb=b_string.split(","); SinglyList<String> list1 = new SinglyList<String>(suma); SinglyList<String> list2 = new SinglyList<String>(sumb); System.out.println("集合A和集合B的交集为:"+list1.addAll(list2)); System.out.println("集合A和集合B的并集为:"+list1.union(list2)); System.out.println("A与B的差集为:"+list1.difference(list2)); System.out.println("B与A的差集为:"+list2.difference(list1)); } } 四、程序运行输出图:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服