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