/*
P R O G R A M M B E S C H R E I B U N G

Demo-Zweck:

Demo-Zweck:
Ein dynamisches Array (also ein Array mit variabler Länge) soll 
durch die Verwendung dynamischen Speichers realisiert werden.
Dies geschieht durch eine sogenannte verkettete Liste.
*/


#include "stdafx.h"
#include <stdio.h>
#include <malloc.h>


struct element{
	int zahl;
	struct element *next;
};


void printList(struct element *dynArray);
struct element *anfuegen(struct element *dynArray, int wert);
void delList(struct element *dynArray);

int main(){
	struct element* dynArray;
	struct element *anfang;
	dynArray = anfuegen(NULL, 9);
	anfang = dynArray;
	for(int i=0; i<10; i++){
		dynArray = anfuegen(dynArray, i+20);
	}

	printList(anfang);
	delList(anfang);
	
	return 0;
}



struct element *anfuegen(struct element *dynArray, int wert){
	struct element *kettenglied;

	if(dynArray == NULL){
		// hole Speicher für neues element
		kettenglied = (struct element *) malloc(sizeof(struct element));
		// Trage den Wert in das dynamischen Array ein
		(*kettenglied).zahl = wert;
		// Trage das letzte element des dynamischen Arrays  ein
		(*kettenglied).next = NULL;
		// gibt dieses element zurück
		return kettenglied;
	}
	else{
		// hole Speicher für neues element
		kettenglied = (struct element *) malloc(sizeof(struct element));
		// Trage den Wert in das dynamischen Array ein
		(*kettenglied).zahl = wert;
		(*kettenglied).next = NULL;
		// verknüpfe dieses element mit dem dynamischen Array
		(*dynArray).next=kettenglied;
		// gibt dieses element zurück
		return kettenglied;
	}
}


void printList(struct element *dynArray){
	struct element *kettenglied;

	kettenglied = dynArray;
	while(kettenglied != NULL){
		printf(" %d ", (*kettenglied).zahl);
		kettenglied = (*kettenglied).next;
	}
//	printf(" %d ", (*kettenglied).zahl);
}

void delList(struct element *dynArray){
	struct element *kettengliedAlt;
	struct element *kettenglied;

	kettenglied = dynArray;
	kettengliedAlt = kettenglied;

	while(kettenglied != NULL){
		printf(" %d ", (*kettenglied).zahl);
		kettengliedAlt = kettenglied;
		kettenglied = (*kettenglied).next;
		free(kettengliedAlt);
	}
//	printf(" %d ", (*kettenglied).zahl);
}

