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.
[C++] Lista jednokierunkowa
-
- Użytkownik
- Posty: 5
- Rejestracja: 29 maja 2013, o 20:48
- Płeć: Mężczyzna
- Lokalizacja: Biadki
- Podziękował: 2 razy
-
- 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
Ź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:
w programie musze zadeklarowac wskaźnik głowa ktory bedzie wskazywał na początek listy czyli
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:
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.
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;
};
Kod: Zaznacz cały
element_listy*glowa;
-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;
-
- Użytkownik
- Posty: 5
- Rejestracja: 29 maja 2013, o 20:48
- Płeć: Mężczyzna
- Lokalizacja: Biadki
- Podziękował: 2 razy