[C++] Lista jednokierunkowa

pierwiastki
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 29 maja 2013, o 20:48
Płeć: Mężczyzna
Lokalizacja: Biadki
Podziękował: 2 razy

[C++] Lista jednokierunkowa

Post autor: pierwiastki »

Witam.
Czy jest ktoś w posiadaniu/zna jakieś źródła z materiałami w których w przystępny sposób opisane jest tworzenie listy jednokierunkowej w c++? Artykuły w internecie, książki, cokolwiek. Mile widziane materiały w języku polskim.
Adwin_
Użytkownik
Użytkownik
Posty: 26
Rejestracja: 18 maja 2013, o 11:11
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 7 razy
Pomógł: 3 razy

[C++] Lista jednokierunkowa

Post autor: Adwin_ »


i pierwszy link:

Musisz tylko znać wskaźniki.
Magnum23
Użytkownik
Użytkownik
Posty: 25
Rejestracja: 26 gru 2012, o 12:38
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 1 raz
Pomógł: 4 razy

[C++] Lista jednokierunkowa

Post autor: Magnum23 »

Źródeł nie polece bo nie znam dobrych jeśli chodzi o to ale znając samo postępowanie łatwo mozna stworzyc liste liniową:

1) Definiuje strukturę elementu listy ktora bedzie przechowywała wprowadzone dane u mnie będą to np jakieś liczby:

Kod: Zaznacz cały

struct element_listy
{
 element_listy*nastepny;
};
w programie musze zadeklarowac wskaźnik głowa ktory bedzie wskazywał na początek listy czyli

Kod: Zaznacz cały

element_listy*glowa;
Teraz dopoki na liscie nie ma jeszcze zadnego elementu to głowa powinna wskazywać na NULL taki zapis oznacza ze lista jest pusta, teraz moge dołączac kolejne elementy listy wg takiego algorytmu:

-operatorem new (to sie tyczy C++) alokuje pamiec na nowy element listy
-wprowdzam dane do przydzielonego obszaru pamięci.
-wskaźnik nastepny nowego elementu ustawiam na element wskazywany przez wskaźnik glowa.
-wskaźnik glowa ustawiam aby wskazywał nowo utworzony element listy.

przykład:

Kod: Zaznacz cały

#include<iostream>
#include<cstdio>
#include<new>
using namespace std;
struct element_listy
{
  int liczba;
element_listy*nastepny;
};
int main()
 {
  element_listy*glowa=NULL; //tworze pustą liste
  element_listy*nowy;
  char odp;
  int d;
 cout<<"Dodac nowy element? [t/n]";
 cin>>odp;
 do
 {
  cout<<"Podaj dane";
  cin>>d;
  try{
  nowy=new element_listy;
  }
 catch(bad_alloc)
 {
   cout<<"Nie ma miejsca na kolejny element";
    break;
  }
nowy->nastepny=glowa;
nowy->liczba=d;
glowa=nowy;
cout<<endl<<Chcesz podac kolejny element listy> [t/n]";
cin>>odp;
while(odp!='n');
}
element_listy*temp=glowa //poczatek wpisywania elementow listy
cout<<"Utworzona lista to:"<<endl;
 while(temp!=NULL)
 {
cout<<temp->liczba<<" ";
temp=temp->nastepny;
}
cin.ignore();
getchar();
return 0;
programu nie sprawdzałem pod kątem błędow składniowych bo pisałem go w sumie na szybko tutaj w edytorze w razie czego pisz albo sprobuj sam wyszukać jakby coś było ;) w programie dodałem tez obsługe przypadku braku pamieci na dołączenie kolejnego elementu do listy.
pierwiastki
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 29 maja 2013, o 20:48
Płeć: Mężczyzna
Lokalizacja: Biadki
Podziękował: 2 razy

[C++] Lista jednokierunkowa

Post autor: pierwiastki »

Dzięki!:D
ODPOWIEDZ