Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void vojska(struct DLLNode *lista, int a, int b, int c, int d)
- {
- if (lista->Next == lista || lista->Next->Next == lista)
- {
- return;
- }
- struct DLLNode *first1 = NULL;
- struct DLLNode *first2 = NULL;
- struct DLLNode *last1 = NULL;
- struct DLLNode *last2 = NULL;
- struct DLLNode *itr1 = lista->Next;
- while (itr1 != lista)
- {
- if (!first1 && itr1->Value == a)
- {
- first1 = itr1;
- }
- if (!first2 && itr1->Value == c)
- {
- first2 = itr1;
- }
- if (!last1 && itr1->Value == b)
- {
- last1 = itr1;
- }
- if (!last2 && itr1->Value == d)
- {
- last2 = itr1;
- }
- if (first1 && first2 && last1 && last2)
- {
- break;
- }
- itr1 = itr1->Next;
- }
- first1->Prev->Next = first2;
- first2->Prev->Next = first1;
- last1->Next->Prev = last2;
- last2->Next->Prev = last1;
- itr1 = first1->Prev == first2 ? first1 : first1->Prev;
- first1->Prev = first2->Prev;
- first2->Prev = itr1;
- itr1 = last1->Next == last2 ? last1 : last1->Next;
- last1->Next = last2->Next;
- last2->Next = itr1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement