• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C++] Lista dwukierunkowa - odczyt i zapis do pliku

+1 głos
1,509 wizyt
pytanie zadane 24 kwietnia 2017 w C i C++ przez Kunka Nowicjusz (170 p.)

Witam. 

Zaczynam z C++ i chcę zrobić coś takiego: Lista dwukierunkowa - dane wczytujemy z pliku, następnie dokonujemy operacji na tych danych - np. usunięcie ogona listy, wyszukiwanie po indeksie itd. Na koniec tak zmodyfikowane dane zapisujemy do innego pliku. 

Na razie napisałam mam kod, który wczytuje dane z pliku (jako string) i zapisuje je do kolejnego pliku.

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    string wiersze; // przechowuje odczytane wiersze tekstu

    fstream plik("ścieżka\\wejscie.txt", ios::in);
    fstream zapis("ścieżka\\wyjscie.txt", ios::out | ios::app);

    if (plik.good() == true) // jeśli plik uda się otworzyć - następuje odczyt danych z pliku
    {
        while (getline(plik, wiersze)) // jesli nie natrafi na koniec pliku, czyta kolejny wiersz
        {
            cout << wiersze << endl; // wypisuje odczytane wiersze w konsoli + tutaj dalej kod do np. operacji na listach
            zapis << wiersze << endl; // zapisuje odczytane wartosci do pliku
        }
        plik.close(); //zamyka plik po odczytaniu
        zapis.close();
    }
    else // jesli nie uda sie otworzyc pliku do odczytu
    {
            cout << "Nie mozna otworzyc pliku" << endl;
    }
    return 0;
}

I mam takie pytanie. Jak zacząć teraz pracować na liście dwukierunkowej? Rozumiem, że należy zadeklarować strukturę ze wskazaniem na *next i *prev, ale nie wiem jak operować na tej zmiennej "wiersze", do której zapisane zostały dane.

Czy to może być coś takiego? 

struct strukturaDanychDeklaracja{
    strukturaDanychDeklaracja *next;
    strukturaDanychDeklaracja *prev;
    int key;
};

strukturaDanychDeklaracja* wiersze;

 

1 odpowiedź

+1 głos
odpowiedź 24 kwietnia 2017 przez Wiciorny Ekspert (283,300 p.)
jak na tablicy, wskaźnik- jest adresem elementu. wyobraź sobie szufladke która ma swoją etykiete, ta etykieta jest wskaźnikiem która wskazuje na tę szufladkę [ adres w pamięci], natomiast operatorem * wyłuskujesz to co w szufladce jest, czyli np skarpetki.

 

Co warto mięc na uwadze, w odróżnieniu do tablicy trzeba uważać żeby nie ustawić wskaźnika na miejsce w pamięci które spowoduje np utrate, wysyp danych. Generalnie tworząc strukture listy dwukierunkowej ustaw sobie wskaźniki końca i porzdu na  NULL

http://eduinf.waw.pl/inf/alg/001_search/0087.php tutaj  jak zawsze co do algorytmów fajne info znajdziesz i przykłady implementacji

Podobne pytania

0 głosów
0 odpowiedzi 2,046 wizyt
+3 głosów
2 odpowiedzi 16,645 wizyt
0 głosów
0 odpowiedzi 350 wizyt

93,741 zapytań

142,677 odpowiedzi

323,294 komentarzy

63,323 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...