Archief - C++ Gelinkte lijsten

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

kwistenbiebel

Legacy Member
Beste,

Ik had enkele vragen ivm gelinkte lijsten die ik niet direct op google terugvind.

Code:
struct persoon
{
string naam ;
string voornaam ;
int leeftijd;
char geslacht;
};
struct lijstel
{
struct persoon pers1;
struct lijstel* next;
};
void main()
{
struct lijstel *l=NULL;
struct lijstel *m=NULL;
struct lijstel *d=NULL;
struct lijstel *p, *q;
int i, j;
struct persoon pers;
struct persoon a[20];
//lijst invullen
printf("geef naam\n");
while (strlen(gets(pers.naam))!=0)
{
printf("geef voornaam\n");
gets(pers.voornaam);
printf("geef leeftijd\n");
scanf("%d",&pers.leeftijd);
printf("geef geslacht\n");
fflush(stdin);
scanf("%c",&pers.geslacht);
fflush(stdin);

if (l==NULL)
{
l=(lijstel*)malloc(sizeof(lijstel));
(*l).persoon=pers;
(*l).next=NULL;
p=l;
}
else
{
(*p).next=(lijstel*)malloc(sizeof(lijstel));
p=(*p).next;
(*p).persoon=pers;
(*p).next=NULL;
Kan iemand mij zeggen in mensentaal wat er nu eigenlijk stap voor stap gebeurd in deze fase?
Wat doet die malloc nu juist?

Alvast bedankt!

Tyfius

Legacy Member
Code-wise is dit geen C++ maar C en malloc() alloceert geheugen op de heap die jij dan kan invullen.

Om het simpel te stellen kan je zo een lijst op 2 manieren maken. Ofwel alloceer je voordien een vast aantal elementen, een gewone array dus, ofwel gebruik je hier een linked list.

Wanneer je een nieuwe element toevoegt (zolang jij hier dus een naam ingeeft) alloceer je de benodigde geheugenruimte, plaats je het nieuwe element in de lijst en zet je de pointer van het volgende element op NULL. Op die manier kan je dan nagaan of je aan het einde van je lijst zit. Je controleert hier ook (l == NULL) of je de 1ste maal de lijst moet aanmaken of er reeds een lijst bestaat waar je je element aan kan toevoegen.

En dat is het zo een beetje.

Voor een duidelijk en eenvoudig voorbeeld met wat documentatie kan je terecht op Cprogramming.com Tutorial: Linked Lists.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan