Algorytmy 20.IV.2012, Laborki, ASD
[ Pobierz całość w formacie PDF ]
#include <cstdlib>#include <iostream>#define NMAX 100using namespace std;struct lista {int elements[NMAX];int last;};int MakeNull(lista &L);int Insert(int x, int p, lista &L);int Locate(int x, lista L);int Retrive(int x, lista L);int Delete(int x, lista &L);int Next(int x, lista L);int Previous(int x, lista L);int First(lista L);void Print(lista L);void Purge(lista &L);int main(int argc, char *argv[]) {lista L1;lista L2;int tmp, x, pos;do{cout << " 0 . Print lista" << endl;cout << " 1 . Koniec" << endl;cout << " 2 . MakeNull" << endl;cout << " 3 . Insert" << endl;cout << " 4 . Locate" << endl;cout << " 5 . Retrive" << endl;cout << " 6 . Delete" << endl;cout << " 7 . Next" << endl;cout << " 8 . Previous" << endl;cout << " 9 . First" << endl;cout << " 10. Printlist" << endl;cout << " 11. Purge" << endl;cout << endl << endl;cin >> tmp;switch (tmp){case 0:// Wypisz liste L1.elements oraz L1.lastfor (int i=0;i<NMAX;i++)cout<< i << "-ty element wynosi "<< L1.elements[i] << endl;cout << endl;cout << "L.last wunosi ----->>>>" <<L1.last << endl;cout << endl << endl;break;case 1:system("PAUSE");return EXIT_SUCCESS;break;case 2:MakeNull(L1);cout << endl << endl;break;case 3:// wczytaj element do wstawienia oraz pozycje tego elementu w lisciecout<<"Podaj pozycje na ktora wstawiamy ";cin>>pos;cout<<"Podaj elemeny ktory wstawiamy";cin>>x;Insert(x, pos, L1);cout << endl << endl;break;case 4:// wczytaj wyszukiwany elementcout<<"Podaj szukana liczbe ";cin>>x;cout << Locate(x, L1);cout << endl << endl;break;case 5:// wczytaj pozycje elementu w lisciecout<<"Podaj szukana pozycje ";cin>>x;cout << Retrive(pos, L1);cout << endl << endl;break;case 6:// wczytaj pozycje elementu w lisciecout<<"Podaj szukana pozycje ";cin>>pos;cout << Delete(pos, L1);cout << endl << endl;break;case 7:// wczytaj pozycje elementu w lisciecout << Next(pos, L1);cout << endl << endl;break;case 8:// wczytaj pozycje elementu w lisciecout << Previous(pos, L1);cout << endl << endl;break;case 9:cout << First(L1);cout << endl << endl;break;case 10:Print(L1);cout << endl << endl;break;case 11:// wczytaj elementy listy L2Print(L2);Purge(L2);Print(L2);cout << endl << endl;break;}} while (1);}int MakeNull(lista &L) {// Tworzy lusta listeL.last=-1;for(int i=0; i<NMAX; i++)L.elements[i]=0;}int Insert(int x, int p, lista &L) {// Wstawia element do tablicyif (L.last>NMAX-2) {cout<<"Lista pelna"<<endl<<endl; return 0;}if (p>L.last+1 || p<0) {cout << "pozycja w liscie nie istnieje" << endl << endl; return -1;}else {for (int i=L.last; i>=p; i--)L.elements[i+1] = L.elements[i];L.elements[p]=x;++L.last;}}int Locate(int x, lista L) {//Szuka elementu w lisciefor (int i=0;i<=L.last; i++)if(L.elements[i]==x) return i;return(L.last+1);}int Retrive(int i, lista L) {//Zwraca liczbe na pozycjiif(i>=0 && i<=L.last){return L.elements[i]; }else {cout<<"Brak pozycji w liscie" << endl << endl; return -1;}}int Delete(int x, lista &L) {//Usuwa element na pozycjiif(x<0 || x>L.last){cout<<"Brak pozycji w liscie " << endl << endl; return -1;}else{for (int i=x;i<L.last;i++)L.elements[i]=L.elements[i+1];cout<<endl<<endl;L.elements[L.last]=0;--L.last;return 0;}}int Next(int x, lista L){//Wypisuje nastepny elementif(x<-1 || x>L.last){cout << "Brak nastepnego elementu w liscie"<< endl << endl; return -1;}else return x+1;}int Previous(int x, lista L) {//Wypisuje poprzedni elementif(x<1 || x>L.last){cout << "Brak poprzedniego elementu w liscie"<< endl << endl; return -1;}else return x-1;}int First(lista L) {//???????????????}void Print(lista L) {//Usuwa duplikatyif(L.last==-1) cout <<"Lista pusta"<<endl;for (int i=0; i<=L.last;i++)cout<< i << "-ty element ->" << L.elements[i]<< endl;}void Purge(lista &L) {//???????????????int p,q;p=First(L);while (p!=L.last+1){q=Next(p,L);while(q!=L.last+1)if(Retrive(p,L)==Retrive(q,L)) Delete(q,L);else q=Next(q,L);}}
[ Pobierz całość w formacie PDF ]