Advertisement
WeltEnSTurm

Untitled

May 16th, 2011
450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1.  
  2. //  ##### list.hpp on 02.05.2011
  3. //  ##### Used for Graphical User Interface
  4. //  ##### Created by WeltEnSTurm
  5.  
  6. #ifndef LIST_HPP_
  7. #define LIST_HPP_
  8.  
  9. template<typename T>
  10. class list {
  11.     protected:
  12.         class entry {
  13.             public:
  14.                 entry(){
  15.                     next = 0;
  16.                     prev = 0;
  17.                     data = 0;
  18.                 }
  19.                 ~entry(){
  20.                     delete data;
  21.                 }
  22.                 entry* next;
  23.                 entry* prev;
  24.                 T* data;
  25.         };
  26.  
  27.         entry* start;
  28.         entry* end;
  29.         long length;
  30.     public:
  31.         list(){
  32.             start   = 0;
  33.             end     = 0;
  34.             length  = 0;
  35.         }
  36.         ~list(){
  37.             entry* current = start;
  38.             while(current != 0){
  39.                 entry* tmp = current->next;
  40.                 delete current;
  41.                 current = tmp;
  42.             }
  43.         }
  44.         T& Get(long i){
  45.             if(i<0 || i>length) errexit("ERROR: list.Get: out of bounds");
  46.             entry* cur = start;
  47.             while(i>0){
  48.                 cur=cur->next;
  49.                 i--;
  50.             }
  51.             return *cur->data;
  52.         }
  53.         T& operator[](long i){
  54.             return Get(i);
  55.         }
  56.         void Append(T& obj){
  57.             entry* tmp = new entry;
  58.             if(!start)
  59.                 start = tmp;
  60.             else
  61.                 end->next = tmp;
  62.             end = tmp;
  63.             length++;
  64.         }
  65.         void Remove(long i){
  66.             if(i<0 || i>length) errexit("ERROR: list.Remove: out of bounds");
  67.             entry* cur = start;
  68.             while(i>0){
  69.                 cur=cur->next;
  70.                 i--;
  71.             }
  72.             cur->prev->next = cur->next;
  73.             cur->next->prev = cur->prev;
  74.             delete cur;
  75.             length--;
  76.         }
  77.         long size(){
  78.             return length;
  79.         }
  80.  
  81. };
  82.  
  83. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement