Element an bestimmte Postion einfügen in einer einfach verketteten Liste


0

Hallo liebe Community,

meine Aufgabe besteht darin eine Funktion in C zu schreiben. Diese soll folgende Funktionsweise erfüllen:

int insert_pos(int v, int pos, list * l)

Die Funktion soll ein neues Listenelement mit dem Wert v an der Position pos in die Liste l einfügen. Dabei ist die Position des Head Elements einer Liste immer 0. Falls pos keine Position in der Liste l ist, dann soll die Funktion -1 als Rückgabewert haben, sonst 0. Es handelt sich um eine einfach verkette Liste.

Leider habe ich keinen wirklichen Ansatz wie ich das Element einfügen kann.

 

gefragt vor 1 Monat
u
unixmelo,
Punkte: 10
 
Kommentar schreiben Diese Frage melden
1 Antwort
0

Hi unixmelo,

(Achtung ich bin nur sehr wenig mit C vertraut) Bei einer SingleLinkedList musst du sicher folgendes beachten.

  1. List Elemente haben eine Verknüpfung auf ihren direkten "Nachfolger" (nullwenn nicht vorhanden), sowie eine Referenz auf die zu speichernden Daten.
  2. Das Head Element kann null oder ein Dummy Element sein,
  3. Die Länge der Liste ist nur bekannt, wenn diese auf der Liste gespeichert ist. Ansonsten musst du die ganze Liste durchgehen um herauszufinden wie lang diese ist, respektive ob ein einfügen möglich ist.

Einfügen: Du brauchst du eine Schleife, welche auf dem head beginnt und Element für Element in der Liste durchgeht und an der entsprechenden Stelle v einfügt. Hierzu musst die die Referenzen auf die Verschiedenen Elemente anpassen.

Überlege dir mal welche verschiedene Fälle auftreten können und wie du diese behandeln musst.

Falls es nicht hilft, beschreibe was du noch nicht genau verstanden hast und wo noch Hilfe brauchst.

Edit: typo

geantwortet vor 1 Monat
_
_marc,
Student, Punkte: 25
 
Kommentar schreiben Diese Antwort melden