List<T> removeDuplicates(List<T> l, compare<T> comp) { List<T> removed; for (int i = 0; i < l.length(); ++i) { T val = l[i]; bool found = false; for (int j = 0; j < removed.length(); ++j) { if (comp(removed[j], val)) found = true; } if (!found) removed.AddToBack(val); } return removed; }
int main() { List<int> l; l.AddToBack(1); l.AddToBack(2); l.AddToBack(3); l.AddToBack(4); l.AddToBack(5); std::cerr << "l: "; int size = l.length(); for (int i = 0; i < size; ++i) std::cerr << " " << l[i]; std::cerr << std::endl; List<int> copy(l); std::cerr << "copy: "; size = copy.length(); for (int i = 0; i < size; ++i) std::cerr << copy[i] << " "; std::cerr << std::endl; List<int> assigned = l; std::cerr << "assigned: "; size = assigned.length(); for (int i = 0; i < size; ++i) std::cerr << assigned[i] << " "; std::cerr << std::endl; for (int i = 0; i < 2; ++i) { int front = l.RemoveFromFront(); std::cerr << "removed " << front << " "; } std::cerr << std::endl; std::cerr << "l: "; for (int i = 0; i < l.length(); ++i) std::cerr << l[i] << " "; std::cerr << std::endl; std::cerr << "copy: "; for (int i = 0; i < copy.length(); ++i) std::cerr << copy[i] << " "; std::cerr << std::endl; std::cerr << "assigned: "; for (int i = 0; i < assigned.length(); ++i) std::cerr << assigned[i] << " "; std::cerr << std::endl; // ======================================= // Problem 2 List<int> dups; dups.AddToBack(1); dups.AddToBack(2); dups.AddToBack(3); dups.AddToBack(4); dups.AddToBack(2); dups.AddToBack(3); dups.AddToBack(3); compare<int> f; List<int> removed = removeDuplicates(dups, f); std::cerr << "removed: "; for (int i = 0; i < removed.length(); ++i) std::cerr << removed[i] << " "; std::cerr << std::endl; return 0; }