#include #include #include "llist-new.h" llist::llist() { data = 0; next = 0; } void ridlast(llist *lst) { llist *temp; temp = lst; while (temp->next->next != 0) { temp = temp->next; } delete temp->next; temp->next = 0; } int getlength(llist *lst) { llist *temp; int count = 0; temp = lst; while (temp != 0) { count++; temp = temp->next; } return count; } int& getitem(llist *lst, int index) { assert(getlength(lst) > index); int curindex = 0; llist *temp = lst; while (temp != 0 && curindex < index) { curindex++; temp = temp->next; } return temp->data; } void setitem(llist *lst, int index, int v) { assert(getlength(lst) > index); int curindex = 0; llist *temp = lst; while (temp != 0 && curindex < index) { curindex++; temp = temp->next; } temp->data = v; } void add(llist *lst, int newval) { llist *temp = lst; while (temp->next != 0) { temp = temp->next; } temp->next = new llist; temp->next->data = newval; } void insert(llist *lst, int d, int index){ assert(getlength(lst) > index); llist *current = lst; llist *temp; int curindex = 0; while (curindex + 1 < index) { current = current->next; curindex++; } temp = current->next; current->next = new llist; current->next->data = d; current->next->next = temp; } void remove(llist *lst, int index) { assert(getlength(lst) > index); llist *current = lst; llist *temp; int curindex = 0; while (curindex + 1 < index) { current = current->next; curindex++; } temp = current->next->next; delete current->next; current->next = temp; } void resize(llist *lst, int newsize){ if (getlength(lst) < newsize) for (int a = getlength(lst); a < newsize; a++) add(lst, a); else for (int a = getlength(lst); a > newsize; a--) ridlast(lst); } void sort(llist *lst) { int temp; for (int a = getlength(lst); a > 1; a--) for (int b = 1; b < a; b++) { if (getitem(lst,b) > getitem(lst,a)) { temp = getitem(lst,b); getitem(lst,b) = getitem(lst,a); getitem(lst,a) = temp; } } } llist* find(llist *lst, int value) { llist *temp = lst; while (temp->data != value) temp = temp->next; return temp; } llist* smaller(llist *lst, int value) { sort(lst); llist *temp = lst; while (temp->next->data < value) temp = temp->next; return temp; } int main() { int a; llist *newlist; newlist = new llist; newlist->data = 0; for (a = 1; a < 100; a++) add(newlist, a); for (a = 0; a < 100; a++) cout << getitem(newlist, a) << " "; cout << endl; return 0; }