Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- using namespace std;
- struct elem{
- int dane;
- elem* nast;
- };
- void insert(elem* &lista, int i, int x){ //Wrzucenie nowego elementu przed zadany, i-ty element.
- elem* nowy = new elem; //Tworzenie nowego el
- nowy->dane = x; //Przypisywanie wart. do el.
- if(i==1){ //Jezeli chcemy dodac jako pierwszy el.
- nowy->nast = lista;
- lista = nowy;
- }
- else if(i > 1){ //Jezeli obiekt jest na dalszej pozycji, to musimy sprawdzic pare rzeczy
- elem* tmp = lista; //Tu bedziemy zapisywac elementy pobrane w nastepnej petli
- int j = 0; //Licznik do iterowania whila
- while(j != (i-2)){ //Idziemy do przodu po liscie do poki nie dojdziemy do i-2 elementu
- tmp = tmp->nast; //Zapisujemy tmp
- j++; //zwiekszamy licznik
- if(tmp == NULL) {cout << "Za krotka lista"; break; }
- }
- nowy->nast = tmp->nast;
- tmp->nast = nowy;
- }
- else { cout << "Nieprawidlowa wartosc i"; }
- }
- void remove(elem* &lista, int i){
- if(lista != NULL){
- if(i == 1){ //Jezeli el. ktory chcemy usunac jest na pierwszej pozycji
- elem* stary = lista; //to sprawa prosta, lista to nastepny element listy
- lista = lista->nast; //stary usuwamy
- delete stary;
- }
- else if(i > 1){ //jezeli usuwany ob. jest gdzies dalej
- elem* tmp = lista; //tymczasowa zmienna do przechowywania tego po czym lecimy w liscie
- int j = 0; //licznik
- while(j != (i-2)){
- tmp = tmp->nast; //przy kadzej iteracji bierzemy nastepny element
- j++; //zwiekszamy licznik
- if(tmp == NULL) {cout << "Za krotka lista"; break; }
- }
- elem* stary = tmp->nast;
- if(stary == NULL) { cout << "Nie ma co usuwac"; }
- tmp->nast = stary->nast;
- delete stary;
- }
- else { cout << "Nieprawidlowa wartosc i"; }
- }
- }
- int read(elem* &lista, int i){
- if(lista != NULL){
- if(i >= 1){
- elem* tmp = lista;
- int j = 0;
- while(j != (i-1)){
- tmp = tmp->nast;
- j++;
- if(tmp == NULL) { cout << "Za krotka lista"; break; }
- }
- return tmp->dane;
- }
- }
- }
- int size(elem* &lista){
- if(lista != NULL){
- elem* tmp = lista;
- int i = 0;
- while(tmp != NULL){
- tmp = tmp->nast;
- i++;
- }
- return i;
- }
- }
- void wypiszDane(elem* &lista){
- if(lista != NULL){
- elem* tmp = lista;
- while(tmp != NULL){
- cout << tmp->dane << ", ";
- tmp = tmp->nast;
- }
- }
- else { cout << endl << "Lista nie istnieje"; }
- }
- void removeList(elem* &lista){
- if(lista != NULL){
- while(lista != NULL){
- elem* stary = lista;
- lista = lista->nast;
- delete stary;
- }
- }
- }
- int main() {
- elem* lista = NULL;
- insert(lista, 1, 5); //5
- insert(lista, 1, 10); //10, 5
- insert(lista, 1, 15); //15, 10, 5
- insert(lista, 3, 66); //15, 10, 66, 5
- cout << "Lista: ";
- wypiszDane(lista);
- remove(lista, 3);
- cout << endl << "Po usunieciu 3 pozycji: ";
- wypiszDane(lista); //15, 10, 5
- cout << endl << "Drugi element listy: " << read(lista, 2); //10
- cout << endl << "Wielkosc listy: " << size(lista); //3
- removeList(lista);
- wypiszDane(lista); //Lista nie istnieje
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement