Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #define Nmax 1000
- using namespace std;
- struct Lista
- {
- int t[Nmax];
- int pr, ul;
- void Init()
- {
- pr = 0; ul = -1;
- }
- int Empty()
- {
- return pr > ul;
- }
- void InsertEnd(int x)
- {
- t[++ul] = x;
- }
- void Insert(int poz, int x)
- {
- for(int i = ul; i >= poz + pr - 1; i--)
- t[i+1] = t[i];
- t[poz + pr - 1] = x;
- ul++;
- }
- void Parcurgere()
- {
- if(Empty()) cout << "Lista este vida!";
- else
- {
- for(int i = pr; i <= ul; i++)
- cout << t[i] << " ";
- cout << "\n";
- }
- }
- void DeleteEnd()
- {
- if(!Empty()) ul--;
- }
- void DeleteBegin()
- {
- if(!Empty()) pr++;
- }
- void Delete(int poz)
- {
- if(Empty()) return;
- for(int i = poz + pr - 1; i < ul; i++)
- t[i] = t[i+1];
- ul--;
- }
- int GetElement(int k)
- {
- return t[pr + k - 1];
- }
- int Search(int x)
- {
- int i;
- for(i = pr; i <= ul; i++)
- if(t[i] == x) return i - pr + 1;
- return -1;
- }
- int Size()
- {
- return ul - pr + 1;
- }
- };
- int main()
- {
- Lista L;
- L.Init();
- int a[10] = {1, 4, 3, 5, 6, 10, 8, 9, 7, 2};
- for(int i = 0; i < 10; i++)
- L.InsertEnd(a[i]);
- L.Parcurgere(); cout << "\n";
- int i, j, iaux, jaux;
- i = 1; j = L.Size();
- while(i < j)
- {
- iaux = L.GetElement(i);
- jaux = L.GetElement(j);
- if(iaux % 2 == 0)
- iaux = L.GetElement(++i);
- if(jaux % 2 == 1)
- jaux = L.GetElement(--j);
- if((iaux % 2 == 1) && (jaux % 2 == 0))
- {
- L.Delete(i);
- L.Insert(i, jaux);
- i++;
- L.Delete(j);
- L.Insert(j, iaux);
- j--;
- }
- }
- L.Parcurgere();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement