Реализуйте и оттестируйте работу некоторого списка, выполненного в духе стандартного типа list.Я небольшой списочек сделал. В общем я сделал не со всеми функциями, просто лень добавлять все функции, какой сделал такой сделал, вот файл list.h:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
//ob69vlenie list #ifndef LIST_H #define LIST_H #include <iostream> using std::cout; using std::endl; template<class T> class list { public: typedef T type_data; typedef size_t size_type; typedef T* iterator; //конструктор по умолчанию list():size_t(0){} //добавить элемент в конец списка void push_back(type_data n); //доступ к последнему элементу type_data& back(); //доступ к первому элементу type_data& front(); //добавление в начало списка void push_front(type_data n); //вывод размера size_type size(){return size_t;} //возврат указателя на первый элемент iterator begin(){return &mass[0];} //возврат указателя на элемент за последним iterator end(){return &mass[size_t];} private: type_data* mass; size_type size_t; }; //добавить элемент в конец списка template<class T> void list<T>::push_back(type_data n) { type_data* temp=mass; mass=new type_data[size_t+1]; for(int i=0;i<size_t;i++) mass[i]=temp[i]; mass[size_t++]=n; } //доступ к последнему элементу template<class T> typename list<T>::type_data& list<T>::back() { return mass[size_t-1]; } //доступ к первому элементу template<class T> typename list<T>::type_data& list<T>::front() { return mass[0]; } //добавление в начало списка template<class T> void list<T>::push_front(type_data n) { type_data* temp=mass; mass=new type_data[size_t+1]; mass[0]=n; for(int i=0,j=1;i<size_t;i++,j++) mass[j]=temp[i]; size_t++; } #endif |
Файл main.cpp:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <iostream> using std::cout; using std::endl; #include "list.h" int main() { cout <<"hellow gacpada"<<endl; list<int> l; l.push_back(4); l.push_back(3); cout <<l.back()<<endl; cout <<l.front()<<endl; l.push_front(10); cout <<l.front()<<endl; cout <<l.back()<<endl; cout <<"l.size()= "<<l.size()<<endl; list<int>::iterator it; for(it=l.begin();it!=l.end();++it) cout <<*it<<' '; cout <<endl; return 0; } |
[youtube]http://www.youtube.com/watch?v=U4etVZcuFsg[/youtube]