• 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

VPS Starter Arubacloud
+1 głos
1,283 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 (269,120 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 1,520 wizyt
+4 głosów
2 odpowiedzi 15,051 wizyt
0 głosów
0 odpowiedzi 110 wizyt

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...