[C] einfach verkettete Liste dynamisch anlegen

posi90

Erfahrenes Mitglied
Hallo,

Ich möchte gerne eine einfach verkettete Liste dynamisch anlegen.

Hab dazu schon einen Ansatz gefunden, nur schaff ichs nicht meinen Pointer so anzupassen, dass ich element = element->next schreiben kann:

C++:
typedef struct _List_
{
  void *ptr_;
  struct _List_ *next_;
}List;
//funktioniert, jedoch möchte ich das gerne in eine Schleife packen
void init_list(List **list)
{
  *list = (List*)malloc(sizeof(List));  
  (*list)->next_ = (List*)malloc(sizeof(List));
  (*list)->next_->next_ = NULL;   //letzte muss NULL sein!
}
//free_list funktioniert
void free_list(List **list)
{
  List *save = (*list)->next_;
  while(*list != NULL)
  {
    save = (*list)->next_;
    free(*list);
    *list = save;
  }
}

int main()
{
  List *list = NULL;
  init_list(&list);
  free_list(&list);
  return 0;
}

Hat jemand einen Denkanstoß für mich?

LG
 
Zuletzt bearbeitet von einem Moderator:
Bin nun doch selbst darauf gekommen =)

C++:
void **insert(List **list, void **ptr)
{
  *list = malloc(sizeof(List));
  (*list)->ptr_ = *ptr;
  *ptr = NULL;
  return (void**)&((*list)->next_);
}

void init_list(List **list)
{
  int iterator = 4;
  List **next = list;

  void *ptr = NULL;
  do
  {
    next = (List**)insert(&(*list), &ptr);
    list = next;
  }while(iterator--);
}
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück