Just nu i M3-nätverket
Gå till innehåll

Listor i C


Sasja

Rekommendera Poster

Hur bygger man listor i C månne?

 

Som länkade Struct:ar. Skapa pekare beroende på vilken typ av lista du vill ha (vilken typ vill du ha?)

 

ÄNDRING: Gud så jag stavade =/

[inlägget ändrat 2004-02-16 14:25:07 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Du skulle inte vilja kleta ut lite kod för en länkad lista med heltal, så jag får lite bättre inblick.

 

Du kan få poäng som förtjänst isåfall... =) *lockar*

 

Länk till kommentar
Dela på andra webbplatser

Det var ett bra tag sedan jag kodade i C, så någon därute får korrigera min kod. Men jag visar grundtanken iallafall:

 

struct ListItem {

ListItem *PrevItem;

ListItem *NextItem

int Data;

}

 

Sen minns jag inte ens hur man instantierade structar (hu, skäms), men tanken:

ListItem nod1=New ListItem(Null,Null,123);

ListItem nod2=New ListItem(nod1,Null,234);

 

Ber om ursäkt för att syntaxen förmodligen inte stämmer, men det kanske du kan bättre.

 

[inlägget ändrat 2004-02-16 14:32:40 av Anjuna Moon]

[inlägget ändrat 2004-02-16 14:33:12 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Jag förstår - tror jag.

 

Vad använder du för kompilator när du pysslade med C? Kan man använda en C++-kompilator utan problem när man knackar C-kod?

 

Jag har frågat en hel del och har hört både det ena och det andra...

 

Länk till kommentar
Dela på andra webbplatser

Struct:arna ska nog deklareras som följande kom jag på:

 

struct ListItem node1;

node1.PrevItem=Null;

node1.NextItem=Null;

node1.Data=1234;

 

Länk till kommentar
Dela på andra webbplatser

C++-kompilator går utmärkt. C är ju en delmängd av C++

Jag minns faktiskt inte, det var runt -94 senast och då var det på Solaris. Gissar att det var GCC jag använde

 

Länk till kommentar
Dela på andra webbplatser

Behöver man verkligen veta PrevItem? I listor brukar det väl vara så att man inte kan se den föregående? Om man tittar på en consbox tex...

 

Länk till kommentar
Dela på andra webbplatser

Behöver man verkligen veta PrevItem

 

Som sagt det finns många typer av listor. Den jag beskrev var en dubbellänkad lista. Sen har du enkellistade, stackar, hashtabeller osv.

 

Beroende på vad du ska använda den till väljer du typ.

 

Länk till kommentar
Dela på andra webbplatser

C är inte en delmängd av C++. Det finns en hel del kod som C++ inte sväljer som däremot är syntaxmässigt korrekt C. Självklart finns saker i C++ som inte fungerar i C men detta är förhoppningsvis uppenbart. Dessutom finns en hel del skilnader mellan C90 och C99. Om du vill ha en ordentlig guide till vad som skiljer C90, C99 och C++ kan du läsa:

 

http://david.tribble.com/text/cdiffs.htm

 

Dessutom skall du inte använda new och delete i C utan malloc och free.

 

Jag vet inte vad du kör med för kompilator men om du t.ex kör med gcc kompilerar du C med gcc och C++ med g++. Miljöer som Visual och Borland brukar välja kompilator efter filtyp. .CPP för C++ och .C för C. Jag vågar nog påstå att de flesta C++ kompilatorer klarar att kompilera C bara man talar om att det är C.

 

M.v.h.

manner

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...