From f89b202792c118a0baa5fb7f4978dbc2077b64d4 Mon Sep 17 00:00:00 2001 From: Charles Date: Tue, 19 Nov 2019 01:51:38 +0100 Subject: basic stack and list --- list.cpp | 0 list.hpp | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- stack.hpp | 29 ++++++++++++++++++++++++ vector.hpp | 5 ----- 4 files changed, 99 insertions(+), 9 deletions(-) delete mode 100644 list.cpp create mode 100644 stack.hpp diff --git a/list.cpp b/list.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/list.hpp b/list.hpp index aaff3e8..c8645b4 100644 --- a/list.hpp +++ b/list.hpp @@ -1,12 +1,78 @@ #ifndef LIST_HPP # define LIST_HPP -template < class T, class Alloc = allocator > -class list +namespace ft { + template < class T, class Alloc = allocator > + class list + { + public: + bool empty() const + { + return front == nullptr; + } + size_type size() const + { + return size; + } + reference front() + { + return *front; + } + reference back() + { + return *back; + } + void push_front (const value_type& val) + { + t_inner_list *nfront = new t_inner_list; + nfront->content = val; + nfront->next = front; + front = nfront; + if (back == nullptr) + back = front; + size++; + } + void pop_front() + { + t_inner_list *nfront = front->next; + if (nfront == nullptr) + back = nullptr; + ~T(front->content); + delete front; + front = nfront; + size--; + } + void push_back (const value_type& val) + { + t_inner_list *nback = new t_inner_list; + nback->content = val; + if (back == nullptr) + { + back = nback; + front = back; + return; + } + back->next = nback; + back = nback; + size++; + } + void pop_back() + { - t_list *head; -}; + } + + private: + typedef struct + { + t_inner_list *next; + T content; + } t_inner_list; + t_inner_list *front; + t_inner_list *back; + size_type size; + }; +} #endif diff --git a/stack.hpp b/stack.hpp new file mode 100644 index 0000000..64bfc66 --- /dev/null +++ b/stack.hpp @@ -0,0 +1,29 @@ +#ifndef STACK_HPP +# define STACK_HPP + +# include "vector.hpp" + +namespace ft +{ + template > + class stack : public vector + { + public: + explicit stack (const container_type& ctnr = container_type()); + value_type& top() + { + return back(); + } + void push (const value_type& val) + { + push_back(val); + } + void pop() + { + pop_back(); + } + }; +} + +#endif + diff --git a/vector.hpp b/vector.hpp index 98038c2..0f21995 100644 --- a/vector.hpp +++ b/vector.hpp @@ -96,11 +96,6 @@ namespace ft template void insert (iterator position, InputIterator first, InputIterator last); - - - - - -- cgit