Lista jednokierunkowa c

0

Cześć, wiem ze istnieje artykul na ten temat i pewnie duzo postow ale ja nadal potrzebuje pomocy z takim problemem: wyswietlic liczby calkowite z pliku i utworzyc z nich liste . na razie mam cos takiego, nie wiem nawet czy ide w dobrym kierunku...prosze o pomoc:)

#include <stdio.h>

typedef struct ElemListy{
int wartosc;
struct ElemListy *nast;
} ElemListy;

int main()
{
ElemListy pocz, kon;
pocz = kon = NULL;

FILE *f;
f = fopen("we.txt", "r");
if (f == NULL) {
    printf("Blad otwierania pliku");
    return -1;
}

while (!feof(f)) {
    int d;
    if (fscanf(f, "%d", &d) == 1) {
        printf("%d ", d);
    }

fclose(f);

ElemListy *w;

if( !(w = malloc (sizeof(ElemListy))))
Error ();
w->wartosc = d;
w->nast = pocz;
if( !pocz ) 
        kon = w;
        pocz = w;

}

1
  1. Zapoznaj się z pojęciem formatowania kodu: http://4programmers.net/Forum/998482
  2. Poczytaj po co istnieją nawiasy klamrowe i jak się je właściwie używa.
  3. Zapoznaj się ze szkodliwością nie angielskiego nazewnictwa: http://4programmers.net/Forum/1208091
  4. Zrób sobie strukturę: typedef struct { ElemListy *head,*tail; } IntList;
  5. Zrób sobie funkcje: void append(IntList *L,int value) {...} oraz void clean(IntList *L) {...} oraz void show(IntList *L) {...}
0

struktura i dodawanie elementu listy jednokierunkowej wraz z odszukaniem ostatniego elementu:
(tyle, że w c++, "new LIST" zamień na"malloc"
http://pastebin.com/CmdNmEPN

0

Dzięki _13th_Dragon, link, ktory podeslales bardzo sie przydał. Tymczasem mam jeszcze jeden problem. Mam napisać porgram, który zawiera pewne funkcje , a pozniej je testuje. na razie mam te funkcje, ale dzialam troche na oslep i juz nie wiem co jest nie tak. prosze o podpowiedz;) (Wiem, ze po angielsku lepiej, ale one musza sie tak nazywac a nie bede zmieniac nazw na potrzeby forum. I musza to byc funkcje z tymi parametrami). Funkcję makenode dodalam do tego co mialam zrobic , bo jest potrzebna w funkcji dodajacej element.

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

typedef struct ElemListy {
int wartosc;
struct ElemListy *nast;
} ElemListy;

typedef struct Lista {
ElemListy poczatek;
ElemListy
koniec;
} Lista;

void ZainicjujListe(Lista *l){
l->poczatek = NULL;
l->koniec = NULL;
}

ElemListy makenode(int wartosc, ElemListy next)
{
ElemListy tmp=(ElemListy)malloc(sizeof(node));
tmp -> wartosc = wartosc;
tmp->nast = nast;
return tmp;
}

void Wyswietl(Lista l){
ElemListy
i;
printf("{ ");
for(i = l->poczatek; i; i = i->nast)
printf("%d ", i->wartosc);
printf("}\n");
}

void DodajNaPoczatku(Lista l, int k){
ElemListy
tmp = makenode(k,l->poczatek);
if(!l->koniec) l->koniec = tmp;
l->poczatek = tmp;
}

void DodajNaKoncu(Lista l, int k){
ElemListy
tmp = makenode(k, NULL);
if(l->koniec) l->koniec->nast = tmp;
else l->poczatek = tmp;
l->koniec = tmp;
}

void UsunPoczatek(Lista *l){
ElemListy tmp = l;
if (l != NULL){
l = l->nast;
free(tmp);
}

void UsunKoniec(Lista l){
tmp = l->poczatek
ElemListy
t;
while(tmp->nast != NULL){
t = tmp;
tmp = tmp->nast;
}
free(t->nast);
t->nast = NULL;
}

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