Created
January 6, 2016 18:08
-
-
Save dafr32/4b1b571ed9103351f18a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <cstdlib> | |
#include <iomanip> | |
using namespace std; | |
/* | |
Koncepcja: | |
1. Utworzenie struktury elementu listy | |
2. Utworzyć wskaźnik na pierwszy element listy | |
3. Utworzyc funkcję DodajElement() | |
4. Utworzyc funkcję WyswietlListe() | |
5. W programie głównych poprawc dane i uruchomić odpowiednią funkcję | |
6. Utworzyc funkcję UsunElement() | |
*/ | |
//1. Utworzenie struktury elementu listy | |
struct T_element{ | |
string imie; | |
int wiek; | |
T_element *nastepny; | |
}; | |
//2. Utworzyć wskaźnik na element | |
T_element *pierwszy = NULL; | |
//funkcja DodajElement(wartości) | |
void DodajElement(string parImie, int parWiek) | |
{ | |
/* Dodawanie elementu do listy | |
1. utworzyć element tymczasowy | |
2. przypisać mu wartości parametrów | |
3. umieścić element na końcu listy | |
*/ | |
// 1. utworzyć element tymczasowy | |
T_element *tmp = new T_element; // utworzenie nowego dynamicznego wskaźnika | |
// na nieistniejącą zmienną | |
// 2. przypisać mu wartości parametrów | |
tmp->imie = parImie; | |
tmp->wiek = parWiek; | |
tmp->nastepny = NULL; //jest ostatni i nie wskazuje na żaden inny | |
// 3. Umieszczenie elementu na końcu listy | |
// jeśli jest to pierwszy element | |
if (pierwszy==NULL) | |
{ | |
pierwszy=tmp; | |
}else | |
{ //jeśli są jakieś elementy to trzeba po kolei dostać się do elementu ostatniego | |
/* | |
poszukiwanie ostatniego elementu listy: | |
1. utworzyć element tymczasowy i przypisać mu adres pierwzego elementu | |
2. za pomocą pętli przejść do elementu. który ma wpisane nastepny = NULL | |
3. przypisać mu wskazanie na nasz tymczasowy element | |
*/ | |
T_element *tmp2 = pierwszy; // 1. utworzyć element tymczasowy i przypisać mu adres pierwzego elementu | |
while(tmp2->nastepny!=NULL) | |
{ | |
tmp2 = tmp2->nastepny; //2. za pomocą pętli przejść do elementu. który ma wpisane nastepny = NULL | |
} | |
tmp2->nastepny = tmp; //3. przypisać mu wskazanie na nasz tymczasowy element | |
} | |
} | |
void UsunElement(string parametr1) | |
{ | |
T_element *tmp = pierwszy; | |
T_element *tmp2 = pierwszy->nastepny; | |
// jeśli poszukiwane imie jest w pierwszym elemencie | |
if (tmp->imie == parametr1) | |
pierwszy = tmp2; | |
delete tmp; //usuń element tmp z pamięci | |
else | |
{ | |
bool jest = false; //zmienne tymczasowa - czy znaleziono poszukiwane imię | |
//powtórz dopóki tmp2 nie jest puste i nie znaleziono imienia | |
while(tmp2!=NULL && jest==false) | |
{ | |
//jeśli znaleziono imię | |
if (tmp2->imie == parametr1) | |
{ | |
jest=true; | |
tmp->nastepny=tmp2->nastepny; | |
}else | |
{ | |
tmp=tmp->nastepny; | |
tmp2=tmp2->nastepny; | |
} | |
} | |
if (jest) delete tmp2; | |
} | |
} | |
void PokazListe() | |
{ | |
/* | |
Pętla: | |
1. Utworzyć wskaźnik tymczasowy i przypisać mu pierwszy element | |
2. Wyświetlić wartości elementu tmp | |
3. Zmienić adres wskaźnika na nastepny element listy | |
*/ | |
system("clear"); | |
cout<<left<<setw(20)<<"imie"<<left<<setw(5)<<"wiek \n"<<"------------------------------------"<<endl; | |
T_element *tmp = pierwszy; // 1. utworzyć element tymczasowy i przypisać mu adres pierwzego elementu | |
while(tmp!=NULL) | |
{ | |
cout<<left<<setw(20)<<tmp->imie <<setw(5)<<tmp->wiek<<endl; | |
tmp = tmp->nastepny; // 3. Zmienić adres wskaźnika na nastepny element listy | |
} | |
cout<<endl<<endl; | |
} | |
int main() | |
{ | |
char opcja; | |
string imie; | |
int wiek; | |
do { | |
// | |
cout<<" MENU\n" | |
<<"1. Dodaj element \n" | |
<<"2. Usun element \n" | |
<<"3. Wyswietl liste \n" | |
<<"4. Zakoncz program \n" | |
<<"------------------------------ \n" | |
<<"Wynierz opcje (1-4):"; | |
cin>>opcja; | |
switch(opcja-48) | |
{ | |
case 1: cout<<"Podaj imie:";cin>>imie; | |
cout<<"Podaj wiek:";cin>>wiek; | |
DodajElement(imie,wiek); | |
system("clear"); | |
break; | |
case 2: cout<<"Podaj imie:";cin>>imie; | |
UsunElement(imie); | |
break; | |
case 3: system("clear"); | |
PokazListe(); | |
break; | |
case 4: return 0;break; | |
} | |
}while(true); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment