130 lines
2.3 KiB
C
130 lines
2.3 KiB
C
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include "double_chained_functions.h"
|
||
|
|
||
|
messdaten* insertFirst (messdaten* firstelem, messdaten* newelement)
|
||
|
{
|
||
|
if (firstelem != NULL)
|
||
|
{
|
||
|
newelement->next = firstelem;
|
||
|
newelement->prev = firstelem->prev;
|
||
|
firstelem->prev = newelement;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
newelement->next = NULL;
|
||
|
newelement->prev = newelement;
|
||
|
}
|
||
|
|
||
|
return (newelement);
|
||
|
}
|
||
|
|
||
|
messdaten* insertLast (messdaten* firstelem, messdaten* newelement)
|
||
|
{
|
||
|
if (firstelem != NULL)
|
||
|
{
|
||
|
newelement->prev = firstelem->prev;
|
||
|
firstelem->prev = newelement;
|
||
|
newelement->prev->next = newelement;
|
||
|
newelement->next = NULL;
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
firstelem = insertFirst (firstelem, newelement);
|
||
|
}
|
||
|
|
||
|
return (firstelem);
|
||
|
}
|
||
|
|
||
|
messdaten* insertPos (messdaten* firstelem, messdaten* newelement, int pos)
|
||
|
{
|
||
|
int i = 0;
|
||
|
messdaten* temp = firstelem;
|
||
|
|
||
|
if (pos == 0)
|
||
|
{
|
||
|
firstelem = insertFirst (firstelem, newelement);
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
while (temp->next != NULL && i < (pos - 2))
|
||
|
{
|
||
|
temp = temp->next;
|
||
|
i++;
|
||
|
}
|
||
|
|
||
|
if (temp->next != NULL)
|
||
|
{
|
||
|
newelement->next = temp->next;
|
||
|
temp->next = newelement;
|
||
|
newelement->prev = temp->next->prev;
|
||
|
temp->next->prev = newelement;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
firstelem = insertLast (firstelem, newelement);
|
||
|
fprintf (stderr,"llfunct:insertPos->Warning Position is not existing. Element is added to the end of the list!!\n");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return (firstelem);
|
||
|
}
|
||
|
|
||
|
messdaten* deleteFirst (messdaten* firstelem)
|
||
|
{
|
||
|
messdaten* n = firstelem;
|
||
|
|
||
|
firstelem = n->next;
|
||
|
firstelem->prev = n->prev;
|
||
|
free (n);
|
||
|
|
||
|
return (firstelem);
|
||
|
}
|
||
|
|
||
|
messdaten* deleteLast (messdaten* firstelem)
|
||
|
{
|
||
|
messdaten* temp = firstelem->prev;
|
||
|
|
||
|
firstelem->prev = firstelem->prev->prev;
|
||
|
free ((firstelem->prev->next));
|
||
|
firstelem->prev->next = NULL;
|
||
|
|
||
|
return (firstelem);
|
||
|
}
|
||
|
|
||
|
messdaten* deletePos (messdaten* firstelem, int pos)
|
||
|
{
|
||
|
int i = 0;
|
||
|
messdaten* temp = firstelem;
|
||
|
messdaten* tempsec;
|
||
|
|
||
|
while (i < (pos - 2))
|
||
|
{
|
||
|
temp = temp->next;
|
||
|
i++;
|
||
|
}
|
||
|
|
||
|
tempsec = temp->next->next;
|
||
|
tempsec->prev = temp;
|
||
|
|
||
|
free (temp->next);
|
||
|
temp->next = tempsec;
|
||
|
|
||
|
return (firstelem);
|
||
|
}
|
||
|
|
||
|
messdaten* deleteAll (messdaten* firstelem)
|
||
|
{
|
||
|
messdaten* temp;
|
||
|
|
||
|
while (firstelem->next != NULL)
|
||
|
{
|
||
|
temp = firstelem;
|
||
|
firstelem = temp->next;
|
||
|
free (temp);
|
||
|
}
|
||
|
return (firstelem);
|
||
|
}
|