我正在开展一个项目,我必须联合并交叉两套。我正在使用带有虚节点的每个集合的链表。这是我初始化我的集合LL类
的方法public Set() {
top = new Node(Integer.MIN_VALUE, new Node(Integer.MAX_VALUE, null) );
} //end Set
这就是我插入物品的方式。
public void insert(int item) {
Node prev = top;
Node curr = top.next;
while( curr.item < item ) {
prev = curr;
curr = curr.next;
}
prev.next = new Node( item, curr);
size++;
} // insert
现在我发现很难得到一个联合或两组的交集。 这就是我对交叉的想法。
public Set intersection( Set setB ) {
Set setC = new Set ();
//loop over both sets and if both have same value add it otherwise
// get to the next node in both sets.
我的问题是,我在交叉伪代码逻辑上是否正确?我的工会伪代码是可笑的。有人可以指导我这个问题吗?
答案 0 :(得分:0)
这个简单的输入你的想法会失败:
1 2
2 3
你的想法:
//loop over both sets and if both have same value add it otherwise
// get to the next node in both sets.
1
和2
,不是相同的值,所以我们在两个集合中都进入下一个2
和3
,不是相同的值,所以转到下一个你真正需要的是:
对于工会来说,这个想法非常相似: