Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- template <typename T>
- class List {
- private:
- List(const List&) = delete;
- void operator=(const List&) = delete;
- struct Node {
- T data;
- Node* next;
- };
- Node* First;
- public:
- List()
- {
- First = NULL;
- cout << "Constructor" << endl;
- }
- List(T x)
- {
- First = new Node;
- First->data = x;
- First->next = NULL;
- cout << "Constructor with parametr" << endl;
- }
- void put_in_top(T x)
- {
- Node* el;
- el = new Node;
- if (First == NULL) {
- el->data = x;
- el->next = NULL;
- First = el;
- }
- else {
- el->data = x;
- el->next = First;
- First = el;
- }
- }
- void put_in_end(T x)
- {
- Node *z = First, *p;
- p = new Node;
- if (First == NULL) {
- p->data = x;
- p->next = NULL;
- First = p;
- }
- else {
- while (z->next != NULL) {
- z = z->next;
- }
- p = new Node;
- p->next = NULL;
- p->data = x;
- z->next = p;
- }
- }
- void del_end()
- {
- Node *z = First, *p;
- if (z == NULL) {
- cout << "List is empty" << endl;
- }
- else {
- if (z->next == NULL)
- del_top();
- else {
- while (z->next->next != NULL) {
- z = z->next;
- }
- p = z->next;
- z->next = NULL;
- delete (p);
- }
- }
- }
- void del_top()
- {
- Node* z;
- z = First;
- if (z == NULL) {
- cout << "List is empty" << endl;
- }
- else {
- First = First->next;
- delete z;
- }
- }
- ~List()
- {
- cout << "Destructor" << endl;
- while (First != NULL) {
- del_top();
- }
- }
- operator T() const
- {
- return (T)First->data;
- }
- void output()
- {
- Node* z = First;
- if (First == NULL)
- cout << "There is nothing to display ";
- else {
- while (z != NULL) {
- cout << z->data << " ";
- z = z->next;
- }
- }
- cout << endl;
- }
- };
- int main()
- {
- int a = 3, b = 6;
- List<int> x;
- x.output();
- x.del_top();
- x.del_end();
- cout << endl;
- x.put_in_top(2);
- x.put_in_end(9);
- x.output();
- cout << endl;
- List<int> c(a);
- c.output();
- c.put_in_top(4);
- c.output();
- c.del_top();
- c.output();
- c.put_in_top(8);
- c.put_in_end(9);
- c.output();
- c.del_end();
- c.output();
- system("pause");
- return (0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement