Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Lista ze strukturami.

Ostatnio zmodyfikowano 2014-12-16 16:13
Autor Wiadomość
Nedvid
Temat założony przez niniejszego użytkownika
Lista ze strukturami.
» 2014-12-15 20:33:46
Muszę napisać program który będzie wczytywał z wejścia ciąg znaków, a następnie zapisywał je do listy jednokierunkowej, która będzie składała się z elementów wprowadzonych oraz ich powtórzeń w ciągu znaków.

Np. dla wejścia: Aabbbccd12223
Lista powinna wyglądać tak: A/1, a/1, b/3, c/2, d/1, 1/1, 2/3, 3/1

Mam na to pomysł gorzej z wykonaniem, a mianowicie, chciałem zaimplementować listę ze strukturami która zawiera wprowadzony znak (char), oraz liczbę jej powtórzeń n(int).

Z implementacją listy sobie poradziłem, jednak trzeba ją zmodyfikować bo póki co można do niej dodawać tylko liczby. Jak się za to zabrać ? :)

C/C++
//LISTA
struct element
{
    int x;
};
struct lista
{
    struct element data;
    struct lista * next;
};
struct lista * dodaj_lista( struct lista * first, struct element data )
{
    struct lista * wsk;
    wsk =( struct lista * ) malloc( sizeof( struct lista ) );
    wsk->data = data;
    wsk->next = first;
    return wsk;
}
void wyswietl_liste( struct lista * first )
{
    cout << "\nLista: \n";
    while( first != NULL )
    {
        cout << first->data.x << "\t";
        first = first->next;
    }
    cout << "\n";
}
struct lista * usun_wszystko( struct lista * first )
{
    struct lista * wsk;
    while( first != NULL )
    {
        wsk = first->next;
        free( first );
        first = wsk;
    }
    return first;
}
 
P-122905
Monika90
» 2014-12-15 21:34:01
Jeżeli nie wiesz jak dokonać takiej modyfikacji, to znaczy, że to nie Ty pisałeś ten kod.
P-122914
Nedvid
Temat założony przez niniejszego użytkownika
» 2014-12-15 21:58:47
Bardzo pomocny post, dzięki!!
P-122917
darko202
» 2014-12-16 11:50:48
aby zmienić strukturę danych przechowujących przez listę musisz przebudować strukturę element
np. dwie liczby i string czyli co tam będziesz chciał.

C/C++
//LISTA
struct element
{
    int x;
    int y;
    String s;
};
void wyswietl_liste( struct lista * first )
{
    ...
    cout << first->data.x << "\t";
    cout << first->data.y << "\t";
    cout << first->data.s << "\t"; // tu może być tez  first->data.s.c_str()
    ...
}
P-122935
Nedvid
Temat założony przez niniejszego użytkownika
» 2014-12-16 16:13:30
Muszę jeszcze tylko zmodyfikować strukturę dodawania elementu aby dodawała elementy bez powtórzeń.
Chciałem to zrobić w ten sposób aby zanim doda się element, program sprawdził czy element już nie znajduję się w liście, wymyśliłem coś takiego ale nie działa :/

C/C++
struct lista * dodaj_lista( struct lista * first, struct element data )
{
    struct lista * temp;
    temp = first;
   
    while( first != NULL )
    {
        first = first->next;
        if( temp->data.x == first->data.x )
             return 0;
       
    }
   
    struct lista * wsk;
    wsk =( struct lista * ) malloc( sizeof( struct lista ) );
    wsk->data = data;
    wsk->next = first;
    return wsk;
}
P-122945
« 1 »
  Strona 1 z 1