#include #include #include "llist2.h" llist::llist() { next = 0; } int llist::getdata() { return data; } llist* llist::getnext() { return next; } void llist::setdata(int d) { data = d; } void llist::setnext(llist *n) { next = n; } int llist::getlength() { if (next == 0) return 1; else return 1 + next->getlength(); } int& llist::getitem(int index) { assert((index < getlength()) && (index >= 0)); if (index == 0) return data; else return next->getitem(index - 1); } void llist::setitem(int index, int v) { assert((index < getlength()) && (index >= 0)); if (index == 0) data = v; else next->setitem(index - 1, v); } int& llist::operator [] (int index) { return getitem(index); } void llist::add(int newval) { if (next == 0) { next = new llist; next->data = newval; } else next->add(newval); } llist& llist::operator <<(const int newval) { add(newval); return *this; } llist::llist(int size) { for (int a = 1; a < size; a++) add(0); } llist::llist(int size, int defaultvalue) { data = defaultvalue; for (int a = 1; a < size; a++) add(defaultvalue); } llist::llist(llist &rhs) { data = rhs.data; for (int a = 1; a < rhs.getlength(); a++) add(rhs[a]); } llist& llist::operator+= (llist &rhs) { for (int a = 0; a < rhs.getlength(); a++) add(rhs[a]); return *this; } void main() { llist data, data1; data.setdata(0); data << 34; data << 12; data1[0] = 120; data1 << 200; data1 << 100; cout << data[0] << data[1] << data[2] << endl; data[0] = 3; cout << data[0] << data[1] << data[2] << endl; data += data1; for (int a = 0; a < data.getlength(); a++) cout << data[a] << " "; cout << endl; }