Listy jednokierunkowe - jak zrozumieć ?

0

Czytam już coś koło 3h o listach jednokierunkowych i nadal nie wiele umiem. Znacie może stronę gdzie jest to dość jasno wytłumaczone ? Chodzi o język C.

0

Czego nie rozumiesz?

Nie znasz struktur w c, nie wiesz jak używać malloc czy samej idei nie rozumiesz?

0

idee rozumiem, struktury w miarę możliwości znam. Jednak nie umiem napisać tej listy.

0

@nowicjusz35 - zasada jest taka sama, bez względu na język (no chyba że język nie wspiera wskaźników); Najpierw musisz zrozumieć jak taka lista wygląda i jak działa, aby wiedzieć jak się do niej dobrać; Następnie uczysz się z kursów używania struktur i wskaźników; Jak już będziesz to umiał, to zaimplementowanie prostej listy to formalność - wystarczy rozpisać problem i po kolei pisać kolejne funkcje;

Napisz więc dokładnie czego nie rozumiesz lub czego nie umiesz oprogramować, a coś się doradzi; Przy czym nie zapomnij sam czegoś zrobić i pokazać w poście jakiś kod.

0

http://edu.i-lo.tarnow.pl/inf/alg/001_search/0086.php

Masz tam wszystko co ci potrzebne.
Jak wiesz jak mniej więcej wyglądają struktury to szybko ogarniesz i napiszesz to w c.
A jak nie rozumiesz czegoś to zadaj konkretne pytanie.

0

Jeżeli do tej pory jeszcze nie wiesz czego tak naprawdę nie rozumiesz, to obstawiam że po prostu nie rozumiesz idei właśnie. Bo jakbyś kodu nie rozumiał to byś podał np. że nie rozumiesz wskaźników albo nie rozumiesz struktur.

0

Wydaję mi się, że rozumiem. Tworzę strukturę,a w niej wskaźnik do następnego elementu oraz jakąś zmienna do zapisu danych.

I teraz nie wiem jak się poruszać po tej liście. Bo jeśli mam np. struct typedef Nazwa , to żeby stworzyć drugi element listy to trzeba wpisać taki kod np.
Nazwa *wsk
wsk->i nie wiem na co

1

@nowicjusz35 - tworzenie listy to nic innego jak tworzenie kolejnych węzłów (alokowanie dla nich pamięci), uzupełnianie w dane oraz wpisanie wskaźnika na nowy węzeł w odpowiednie pole z poprzedniego węzła listy;

Jeśli nowy węzeł dodajesz na końcu listy, to wystarczy stworzyć nowy węzeł, w poprzednim węźle ustawić wskaźnik na nowy węzeł, a w tym nowym węźle ustawić wskaźnik na kolejny węzeł na null, bo kolejnego nie ma; Wstawianie nowego węzła oznacza dodatkowo ustawienie wskaźnika na kolejny węzeł w nowo utworzonym węźle;

Masło maślane, ale ideę powinieneś łyknąć; Spróbuj coś napisać a zobaczysz, że nie taki diabeł straszny.

0

Jak do takiego czegoś stworzyć nowy element ?

#include <stdio.h>
#include <stdlib.h>

typedef struct Zeszyt
{
    int wartosc;
    int *nastepny;
}pierwszy;

Zeszyt *NowyWezel;

Coś w tym stylu: ?

Zeszyt *NowyWezel
{
    int *wskaznik;
    wskaznik = &pierwszy;
    wskaznik->wartosc = 4;
    nastepny = wskaznik;
}
0

pomoże ktoś napisać prostą liste składającą się np.z dwóch elementów ? Bo nic mi nie wychodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0