Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- using namespace std;
- class List
- {
- int x, count;
- List *Head, *Tail, *Next, *Prev;
- public:
- List() :Head(NULL), Tail(NULL) {};
- ~List();
- void ShowForward();
- void ShowBackwards();
- void AddLast(int x);
- void AddFirst(int x);
- void DeleteItem(int x);
- void Sort();
- };
- List::~List()
- {
- while (Head)
- {
- Tail = Head->Next;
- delete Head;
- Head = Tail;
- }
- }
- void List::AddLast(int x)
- {
- List *temp = new List;
- temp->Next = NULL;
- temp->x = x;
- count++;
- if (Head != NULL)
- {
- temp->Prev = Tail;
- Tail->Next = temp;
- Tail = temp;
- }
- else
- {
- temp->Prev = NULL;
- Head = Tail = temp;
- }
- }
- void List::AddFirst(int x)//HE HAD0
- {
- List*temp = new List;
- Head->Prev = temp;
- Head = temp;
- count++;
- }
- void List::ShowBackwards()
- {
- List *temp = Tail; //s konca
- while (temp != NULL)
- {
- cout << temp->x << " ";
- temp = temp->Prev;
- }
- cout << endl;
- }
- void List::ShowForward()
- {
- List *temp = Head; //s nachala
- while (temp != NULL)
- {
- cout << temp->x << " ";
- temp = temp->Next;
- }
- cout << endl;
- }
- void List::DeleteItem(int x)
- {
- if ((x == 1) and (Head->Next))
- {
- List *temp = Head;
- Head = Head->Next;
- Head->Prev = NULL;
- delete temp;
- count--;
- return;
- }
- else if ((x == 1) and (Head == Tail))
- {
- Head->Next = NULL;
- Head = NULL;
- delete Head;
- count = 0;
- return;
- }
- else if (x == count) {
- List *temp = Tail;
- Tail = Tail->Prev;
- Tail->Next = NULL;
- delete temp;
- count--;
- return;
- }
- else
- {
- List *temp = Head, *temp2;
- for (int i = 0; i < x - 1; i++)
- temp = temp->Next;
- temp2 = temp;
- temp2->Prev->Next = temp->Next;
- temp2->Next->Prev = temp->Prev;
- delete temp;
- count--;
- }
- }
- //Вот в этом месте я хотел сдохнуть
- void List::Sort()
- {
- List*left = Head;
- List*right = Head->Next;
- List *temp = new List;
- while (left->Next)
- {
- while (right)
- {
- if ((left->x) < (right->x))
- {
- temp->x = left->x;
- left->x = right->x;
- right->x = temp->x;
- }
- right = right->Next;
- }
- left = left->Next;
- right = left->Next;
- }
- }
- void main1()
- {
- List smert;
- int n;
- cout << "Введите число" << endl;
- cin >> n;
- int d;
- cout << "Вводите числа списка" << endl;
- for (int i = 0; i < n; i++)
- {
- cin >> d;
- smert.AddLast(d);
- }
- cout << "Введите номер элемента, который хотите удалить" << endl;
- int i;
- cin >> i;
- smert.DeleteItem(i);
- cout << "Оставшийся список: " << endl;
- smert.ShowForward();
- }
- void main2()
- {
- List smert2;
- int n;
- cout << "Введите число" << endl;
- cin >> n;
- int d;
- cout << "Вводите числа списка" << endl;
- for (int i = 0; i < n; i++)
- {
- cin >> d;
- smert2.AddLast(d);
- }
- cout << "Введите число" << endl;
- int h;
- cin >> h;
- smert2.AddLast(h);
- smert2.Sort();
- cout << "Оставшийся список: " << endl;
- smert2.ShowForward();
- }
- int main()
- {
- setlocale(0, "rus");
- main2();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement