Skip to main content
Code Review

Return to Answer

Commonmark migration
Source Link

###Looking at node

Looking at node

##looking at stack

looking at stack

###General Comments

General Comments

###Looking at node

##looking at stack

###General Comments

Looking at node

looking at stack

General Comments

#ifndef STACK_H
#define STACK_H
#include <iostream>
#include <stdexcept>

template <typename T>
class Stack {
 struct Node { 
 T data;
 Node* next;
 Node(T const& data, Node* next)
 : data(data)
 , next(next)
 {}
 Node(T&& data, Node* next) // With C++11 allow move construction
 : data(std::move(data))
 , next(next)
 {}
 };
 public:
 ~Stack();
 void push(T const& data);
 void push(T&& data); // WIth C++ 11 allow move construction
 bool empty() const;
 int size() const;
 T top() const;
 void pop();
 void print(std::ostream& str = std::cout) const;
 private:
 Node* root = nullptr;
 int elements = 0;
};
template<typename T>
void Stack<T>::~Stack()
{
 Node* next;
 for(Node* loop = root; loop != nullptr; loop = next)
 {
 next = loop->next;
 delete loop;
 }
}
template<typename T>
void Stack<T>::push(T const& data)
{
 root = new Node(data, root);
 ++elements;
}
template<typename T>
void Stack<T>::push(T&& data)
{
 root = new Node(std::forward(data), root);
 ++elements;
}
template<typename T>
bool Stack<T>::empty() const
{
 return root == nullptr;
}
template<typename T>
int Stack<T>::size() const
{
 return elements;
}
template<typename T>
T Stack<T>::top() const
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 return root->data;
}
template<typename T>
void Stack<T>::pop()
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 Node* tmp = root;
 root = root->next;
 --elements;
 delete tmp;
}
template<typename T>
void Stack<T>::print(std::ostream& str) const
{
 int id = 0;
 for(Node* loop=root; loop != nullptr; loop=loop->next, ++id)
 {
 str << "Element: " << id << " = " << loop->data << "\n";
 }
}
#endif
#ifndef STACK_H
#define STACK_H
#include <iostream>
template <typename T>
class Stack {
 struct Node { 
 T data;
 Node* next;
 Node(T const& data, Node* next)
 : data(data)
 , next(next)
 {}
 Node(T&& data, Node* next) // With C++11 allow move construction
 : data(std::move(data))
 , next(next)
 {}
 };
 public:
 ~Stack();
 void push(T const& data);
 void push(T&& data); // WIth C++ 11 allow move construction
 bool empty() const;
 int size() const;
 T top() const;
 void pop();
 void print(std::ostream& str = std::cout) const;
 private:
 Node* root = nullptr;
 int elements = 0;
};
template<typename T>
void Stack<T>::~Stack()
{
 Node* next;
 for(Node* loop = root; loop != nullptr; loop = next)
 {
 next = loop->next;
 delete loop;
 }
}
template<typename T>
void Stack<T>::push(T const& data)
{
 root = new Node(data, root);
 ++elements;
}
template<typename T>
void Stack<T>::push(T&& data)
{
 root = new Node(std::forward(data), root);
 ++elements;
}
template<typename T>
bool Stack<T>::empty() const
{
 return root == nullptr;
}
template<typename T>
int Stack<T>::size() const
{
 return elements;
}
template<typename T>
T Stack<T>::top() const
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 return root->data;
}
template<typename T>
void Stack<T>::pop()
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 Node* tmp = root;
 root = root->next;
 --elements;
 delete tmp;
}
template<typename T>
void Stack<T>::print(std::ostream& str) const
{
 int id = 0;
 for(Node* loop=root; loop != nullptr; loop=loop->next, ++id)
 {
 str << "Element: " << id << " = " << loop->data << "\n";
 }
}
#endif
#ifndef STACK_H
#define STACK_H
#include <iostream>
#include <stdexcept>

template <typename T>
class Stack {
 struct Node { 
 T data;
 Node* next;
 Node(T const& data, Node* next)
 : data(data)
 , next(next)
 {}
 Node(T&& data, Node* next) // With C++11 allow move construction
 : data(std::move(data))
 , next(next)
 {}
 };
 public:
 ~Stack();
 void push(T const& data);
 void push(T&& data); // WIth C++ 11 allow move construction
 bool empty() const;
 int size() const;
 T top() const;
 void pop();
 void print(std::ostream& str = std::cout) const;
 private:
 Node* root = nullptr;
 int elements = 0;
};
template<typename T>
Stack<T>::~Stack()
{
 Node* next;
 for(Node* loop = root; loop != nullptr; loop = next)
 {
 next = loop->next;
 delete loop;
 }
}
template<typename T>
void Stack<T>::push(T const& data)
{
 root = new Node(data, root);
 ++elements;
}
template<typename T>
void Stack<T>::push(T&& data)
{
 root = new Node(std::forward(data), root);
 ++elements;
}
template<typename T>
bool Stack<T>::empty() const
{
 return root == nullptr;
}
template<typename T>
int Stack<T>::size() const
{
 return elements;
}
template<typename T>
T Stack<T>::top() const
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 return root->data;
}
template<typename T>
void Stack<T>::pop()
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 Node* tmp = root;
 root = root->next;
 --elements;
 delete tmp;
}
template<typename T>
void Stack<T>::print(std::ostream& str) const
{
 int id = 0;
 for(Node* loop=root; loop != nullptr; loop=loop->next, ++id)
 {
 str << "Element: " << id << " = " << loop->data << "\n";
 }
}
#endif
edited body
Source Link
Loki Astari
  • 97.7k
  • 5
  • 126
  • 341
#ifndef STACK_H
#define STACK_H
#include <iostream>
template <typename T>
class Stack {
 struct Node { 
 T data;
 Node* next;
 Node(T const& data, Node* next)
 : data(data)
 , next(next)
 {}
 Node(T&& data, Node* next) // With C++11 allow move construction
 : data(std::move(data))
 , next(next)
 {}
 };
 public:
 ~Stack();
 void push(T const& data);
 void push(T&& data); // WIth C++ 11 allow move construction
 bool empty() const;
 int size() const;
 T top() const;
 void pop();
 void print(std::ostream& str = std::cout) const;
 private:
 Node* root = nullptr;
 int elements = 0;
};
template<typename T>
void Stack<T>::~Stack()
{
 Node* next;
 for(Node* loop = root; rootloop != nullptr; loop = next)
 {
 next = loop->next;
 delete loop;
 }
}
template<typename T>
void Stack<T>::push(T const& data)
{
 root = new Node(data, root);
 ++elements;
}
template<typename T>
void Stack<T>::push(T&& data)
{
 root = new Node(std::forward(data), root);
 ++elements;
}
template<typename T>
bool Stack<T>::empty() const
{
 return root == nullptr;
}
template<typename T>
int Stack<T>::size() const
{
 return elements;
}
template<typename T>
T Stack<T>::top() const
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 return root->data;
}
template<typename T>
void Stack<T>::pop()
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 Node* tmp = root;
 root = root->next;
 --elements;
 delete tmp;
}
template<typename T>
void Stack<T>::print(std::ostream& str) const
{
 int id = 0;
 for(Node* loop=root; loop != nullptr; loop=loop->next, ++id)
 {
 str << "Element: " << id << " = " << loop->data << "\n";
 }
}
#endif
#ifndef STACK_H
#define STACK_H
#include <iostream>
template <typename T>
class Stack {
 struct Node { 
 T data;
 Node* next;
 Node(T const& data, Node* next)
 : data(data)
 , next(next)
 {}
 Node(T&& data, Node* next) // With C++11 allow move construction
 : data(std::move(data))
 , next(next)
 {}
 };
 public:
 ~Stack();
 void push(T const& data);
 void push(T&& data); // WIth C++ 11 allow move construction
 bool empty() const;
 int size() const;
 T top() const;
 void pop();
 void print(std::ostream& str = std::cout) const;
 private:
 Node* root = nullptr;
 int elements = 0;
};
template<typename T>
void Stack<T>::~Stack()
{
 Node* next;
 for(Node* loop = root; root != nullptr; loop = next)
 {
 next = loop->next;
 delete loop;
 }
}
template<typename T>
void Stack<T>::push(T const& data)
{
 root = new Node(data, root);
 ++elements;
}
template<typename T>
void Stack<T>::push(T&& data)
{
 root = new Node(std::forward(data), root);
 ++elements;
}
template<typename T>
bool Stack<T>::empty() const
{
 return root == nullptr;
}
template<typename T>
int Stack<T>::size() const
{
 return elements;
}
template<typename T>
T Stack<T>::top() const
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 return root->data;
}
template<typename T>
void Stack<T>::pop()
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 Node* tmp = root;
 root = root->next;
 --elements;
 delete tmp;
}
template<typename T>
void Stack<T>::print(std::ostream& str) const
{
 int id = 0;
 for(Node* loop=root; loop != nullptr; loop=loop->next, ++id)
 {
 str << "Element: " << id << " = " << loop->data << "\n";
 }
}
#endif
#ifndef STACK_H
#define STACK_H
#include <iostream>
template <typename T>
class Stack {
 struct Node { 
 T data;
 Node* next;
 Node(T const& data, Node* next)
 : data(data)
 , next(next)
 {}
 Node(T&& data, Node* next) // With C++11 allow move construction
 : data(std::move(data))
 , next(next)
 {}
 };
 public:
 ~Stack();
 void push(T const& data);
 void push(T&& data); // WIth C++ 11 allow move construction
 bool empty() const;
 int size() const;
 T top() const;
 void pop();
 void print(std::ostream& str = std::cout) const;
 private:
 Node* root = nullptr;
 int elements = 0;
};
template<typename T>
void Stack<T>::~Stack()
{
 Node* next;
 for(Node* loop = root; loop != nullptr; loop = next)
 {
 next = loop->next;
 delete loop;
 }
}
template<typename T>
void Stack<T>::push(T const& data)
{
 root = new Node(data, root);
 ++elements;
}
template<typename T>
void Stack<T>::push(T&& data)
{
 root = new Node(std::forward(data), root);
 ++elements;
}
template<typename T>
bool Stack<T>::empty() const
{
 return root == nullptr;
}
template<typename T>
int Stack<T>::size() const
{
 return elements;
}
template<typename T>
T Stack<T>::top() const
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 return root->data;
}
template<typename T>
void Stack<T>::pop()
{
 if (root == nullptr)
 { throw std::runtime_error("Invalid Action");
 }
 Node* tmp = root;
 root = root->next;
 --elements;
 delete tmp;
}
template<typename T>
void Stack<T>::print(std::ostream& str) const
{
 int id = 0;
 for(Node* loop=root; loop != nullptr; loop=loop->next, ++id)
 {
 str << "Element: " << id << " = " << loop->data << "\n";
 }
}
#endif
edited body
Source Link
Loki Astari
  • 97.7k
  • 5
  • 126
  • 341
Loading
deleted 1 character in body
Source Link
Loki Astari
  • 97.7k
  • 5
  • 126
  • 341
Loading
added 255 characters in body
Source Link
Loki Astari
  • 97.7k
  • 5
  • 126
  • 341
Loading
added 2033 characters in body
Source Link
Loki Astari
  • 97.7k
  • 5
  • 126
  • 341
Loading
added 929 characters in body
Source Link
Loki Astari
  • 97.7k
  • 5
  • 126
  • 341
Loading
added 1 character in body
Source Link
Jamal
  • 35.2k
  • 13
  • 134
  • 238
Loading
Source Link
Loki Astari
  • 97.7k
  • 5
  • 126
  • 341
Loading
lang-cpp

AltStyle によって変換されたページ (->オリジナル) /