#include #include using namespace std; void print(const list& alist); bool member_of(const int value, const list& alist, list::const_iterator it); void unique(list& alist); int main() { list alist; alist.push_back(30); alist.push_back(10); alist.push_back(50); alist.push_back(80); alist.push_back(50); alist.push_back(10); alist.push_back(40); alist.push_back(10); alist.push_back(70); print(alist); unique(alist); print(alist); } void print(const list& alist) { for (list::const_iterator it = alist.begin(); it != alist.end(); it++) { cout << *it << " "; } cout << endl; } bool member_of(const int value, const list& alist, list::const_iterator it) { if (it == alist.end()) return false; return (*it == value) || member_of(value, alist, ++it); } void unique(list& alist) { if (alist.size() <= 1) return; int first = alist.front(); alist.erase(alist.begin()); // remove the first element unique(alist); // make the rest of the list unique if (!member_of(first, alist, alist.begin())) { alist.push_front(first); // put back the first element } }