Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- struct Node
- {
- int data;
- Node* pNext;
- };
- int Count(Node* item)
- {
- int i = 0;
- while (item != NULL)
- {
- item = item->pNext;
- i++;
- }
- return i;
- }
- void PrintList(Node* head)
- {
- Node* current = head;
- while (current != NULL)
- {
- cout << current->data << ",";
- current = current->pNext;
- }
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- int d = 1;
- while (d != 0)
- {
- int n;
- cout << "enter # of elements: ";
- cin >> n;
- Node head;
- head.pNext = NULL;
- for (int i = 1; i <= n; i++)
- {
- if (i == 1)
- {
- head.data = i;
- continue;
- }
- Node* last = &head;
- while (last->pNext)
- {
- last = last->pNext;
- }
- Node* element = new Node();
- element->data = i;
- element->pNext = NULL;
- last->pNext = element;
- }
- /*
- PrintList(&head);
- int j;
- cout << endl << "please index to insert a new element (1 - " << n << "): ";
- cin >> j;
- Node* insertAfter = &head;
- int i = 1;
- while (i < j)
- {
- insertAfter = insertAfter->pNext;
- i++;
- }
- Node* element2 = new Node();
- element2->data = 999;
- element2->pNext = insertAfter->pNext;
- insertAfter->pNext = element2;
- n++;
- PrintList(&head);
- //udalenie elementov
- int k;
- cout << endl << "enter index of elements to delete (1 - " << n << "): ";
- cin >> k;
- Node* prevDelete = &head;
- for (int i = 1; i < k - 1; i++)
- {
- prevDelete = prevDelete->pNext;
- }
- Node* toDelete = prevDelete->pNext;
- prevDelete->pNext = prevDelete->pNext->pNext;
- delete toDelete;
- Node* lastDelete = &head;
- for (int i = 1; i < n - 2; i++)
- {
- lastDelete = lastDelete->pNext;
- }
- Node* toDel = lastDelete->pNext;
- lastDelete->pNext = toDel->pNext;
- delete toDel;
- head = *head.pNext;
- n = n - 3;
- */
- PrintList(&head);
- //smena mestami
- int b, a;
- int z = 0;
- int x = 0;
- cout << endl << "smenit element nomer" << "\t";
- cin >> z;
- cout << "na element nomer" << "\t";
- cin >> x;
- Node* smen1 = new Node();
- Node* smen2 = new Node();
- Node* cashe1 = &head;
- Node* cashe2 = &head;
- Node* cashe3 = &head;
- Node* cashe4 = &head;
- if (x > z)
- {
- a = z;
- b = x;
- }
- else
- {
- a = x;
- b = z;
- }
- if (a > b)
- {
- int c = a;
- a = b;
- b = c;
- }
- else
- {
- if (b > a)
- {
- if ((a != 1) && (a != n) && (b != 1) && (b != n))
- {
- {
- int l = 1;
- while (l < b)
- {
- cashe1 = cashe1->pNext;
- l++;
- }
- int k = 1;
- while (k < a)
- {
- cashe2 = cashe2->pNext;
- k++;
- }
- int i = 1;
- while (i < a-1)
- {
- cashe3 = cashe3->pNext;
- i++;
- }
- int j = 1;
- while (j < b-1)
- {
- cashe4 = cashe4->pNext;
- j++;
- }
- if (b-a == 1)
- {
- smen1->pNext = cashe1->pNext;
- cashe1->pNext = cashe3->pNext;
- }
- else
- {
- smen1->pNext = cashe1->pNext;
- cashe1->pNext = cashe2->pNext;
- }
- smen2->pNext = cashe3->pNext;
- cashe3->pNext = cashe4->pNext;
- cashe4->pNext = smen2->pNext;
- cashe2->pNext = smen1->pNext;
- }
- PrintList(&head);
- }
- else
- {
- if ((a == 1) || (b == 1))
- {
- int l = 1;
- while (l < b)
- {
- cashe1 = cashe1->pNext;
- l++;
- }
- int k = 1;
- while (k < a)
- {
- cashe2 = cashe2->pNext;
- k++;
- }
- int j = 1;
- while (j < b-1)
- {
- cashe4 = cashe4->pNext;
- j++;
- }
- if (b-a == 1)
- {
- smen1->pNext = cashe1->pNext;
- cashe1->pNext = &head;
- }
- else
- {
- smen1->pNext = cashe1->pNext;
- cashe1->pNext = cashe2->pNext;
- };
- smen2->pNext = cashe4->pNext;
- cashe4->pNext = &head;
- cashe2->pNext = smen1->pNext;
- PrintList(smen2->pNext);
- }
- else
- {
- if ((a == n) || (b == n))
- {
- int l = 1;
- while (l < a)
- {
- cashe1 = cashe1->pNext;
- l++;
- }
- int k = 1;
- while (k < b)
- {
- cashe2 = cashe2->pNext;
- k++;
- }
- int i = 1;
- while (i < b-1)
- {
- cashe3 = cashe3->pNext;
- i++;
- }
- int j = 1;
- while (j < a-1)
- {
- cashe4 = cashe4->pNext;
- j++;
- }
- smen1->pNext = cashe1->pNext;
- cashe1->pNext = NULL;
- if (b-a == 1)
- {
- smen2->pNext = cashe4->pNext;
- cashe4->pNext = smen1->pNext;
- cashe2->pNext = smen2->pNext;
- }
- else
- {
- smen2->pNext = cashe3->pNext;
- cashe3->pNext = cashe4->pNext;
- cashe4->pNext = smen2->pNext;
- cashe2->pNext = smen1->pNext;
- }
- PrintList(&head);
- }
- }
- }
- }
- else
- {
- if ((a = b) || (b = a))
- {
- PrintList(&head);
- }
- }
- }
- cout << endl << "do you want to do it again?(0 - no)" << endl;
- cin >> d;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement