init
This commit is contained in:
commit
c3513b192b
129
double_chained_functions.c
Executable file
129
double_chained_functions.c
Executable file
@ -0,0 +1,129 @@
|
|||||||
|
#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);
|
||||||
|
}
|
74
double_chained_functions.h
Executable file
74
double_chained_functions.h
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* double_chained_functions.h
|
||||||
|
*
|
||||||
|
* Created on: 14.11.2017
|
||||||
|
* Author: lukas
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef DOUBLE_CHAINED_FUNCTIONS_H_
|
||||||
|
#define DOUBLE_CHAINED_FUNCTIONS_H_
|
||||||
|
|
||||||
|
typedef struct mydata
|
||||||
|
{
|
||||||
|
char sensorname[10];
|
||||||
|
float messwert;
|
||||||
|
} mydata;
|
||||||
|
|
||||||
|
typedef struct messdaten
|
||||||
|
{
|
||||||
|
struct messdaten * next;
|
||||||
|
struct messdaten * prev;
|
||||||
|
struct mydata data;
|
||||||
|
} messdaten;
|
||||||
|
|
||||||
|
/* functon to insert the first element
|
||||||
|
* in: firstelem; newelement
|
||||||
|
* out: newelement
|
||||||
|
* changed: firstelem
|
||||||
|
*/
|
||||||
|
messdaten* insertFirst (messdaten* firstelem, messdaten* newelement);
|
||||||
|
|
||||||
|
/* functon to insert the last element
|
||||||
|
* in: firstelem; newelement
|
||||||
|
* out: newelement
|
||||||
|
* changed: lastelement
|
||||||
|
*/
|
||||||
|
messdaten* insertLast (messdaten* firstelem, messdaten* newelement);
|
||||||
|
|
||||||
|
/* functon to insert the element on a specific position
|
||||||
|
* in: firstelem; newelement; position
|
||||||
|
* out: newelement
|
||||||
|
* changed: one more item in chained list...
|
||||||
|
*/
|
||||||
|
messdaten* insertPos (messdaten* firstelem, messdaten* newelement, int pos);
|
||||||
|
|
||||||
|
/* functon to delete the first element
|
||||||
|
* in: firstelem;
|
||||||
|
* out: newelement
|
||||||
|
* changed: firstelem
|
||||||
|
*/
|
||||||
|
messdaten*
|
||||||
|
deleteFirst (messdaten* firstelem);
|
||||||
|
|
||||||
|
/* functon to delete the last element
|
||||||
|
* in: firstelem
|
||||||
|
* out: newelement
|
||||||
|
* changed: lastelement
|
||||||
|
*/
|
||||||
|
messdaten* deleteLast (messdaten* firstelem);
|
||||||
|
|
||||||
|
/* functon to delete the element of a specific element
|
||||||
|
* in: firstelem; newelement
|
||||||
|
* out: newelement
|
||||||
|
* changed: firstelem
|
||||||
|
*/
|
||||||
|
messdaten* deletePos (messdaten* firstelem, int pos);
|
||||||
|
|
||||||
|
/* functon to delete all the list elements
|
||||||
|
* in: firstelem
|
||||||
|
* out: newelement
|
||||||
|
* changed: the whole list
|
||||||
|
*/
|
||||||
|
messdaten* deleteAll (messdaten* firstelem);
|
||||||
|
|
||||||
|
#endif /* DOUBLE_CHAINED_FUNCTIONS_H_ */
|
55
double_chained_list.c
Executable file
55
double_chained_list.c
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
============================================================================
|
||||||
|
Name : double_chained_list.c
|
||||||
|
Author :
|
||||||
|
Version :
|
||||||
|
Copyright : Your copyright notice
|
||||||
|
Description : Hello World in C, Ansi-style
|
||||||
|
============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "double_chained_functions.h"
|
||||||
|
|
||||||
|
int main (void)
|
||||||
|
{
|
||||||
|
|
||||||
|
messdaten * head;
|
||||||
|
messdaten * erste;
|
||||||
|
messdaten * zweite;
|
||||||
|
messdaten * dritte;
|
||||||
|
|
||||||
|
head = malloc (sizeof(messdaten));
|
||||||
|
erste = malloc (sizeof(messdaten));
|
||||||
|
zweite = malloc (sizeof(messdaten));
|
||||||
|
dritte = malloc (sizeof(messdaten));
|
||||||
|
if (head == NULL || erste == NULL || zweite == NULL || dritte == NULL)
|
||||||
|
{
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
head = insertLast (head, dritte);
|
||||||
|
head = insertPos (head, erste, 1);
|
||||||
|
head = insertPos (head, zweite, 2);
|
||||||
|
|
||||||
|
erste->data.messwert = 42;
|
||||||
|
zweite->data.messwert = 2;
|
||||||
|
dritte->data.messwert = 3;
|
||||||
|
|
||||||
|
printf ("Messwert von head: >%f<\n", head->data.messwert);
|
||||||
|
printf ("Messwert von head next: >%f<\n", head->next->data.messwert);
|
||||||
|
printf ("Messwert von head next next: >%f<\n",
|
||||||
|
head->next->next->data.messwert);
|
||||||
|
printf ("Messwert von head next next: >%f<\n\n",head->next->next->next->data.messwert);
|
||||||
|
|
||||||
|
printf ("Messwert von head >%f<\n", head->data.messwert);
|
||||||
|
printf ("Messwert von erste: >%f<\n", erste->data.messwert);
|
||||||
|
printf ("Messwert von zweite: >%f<\n", zweite->data.messwert);
|
||||||
|
printf ("Messwert von zweite: >%f<\n", dritte->data.messwert);
|
||||||
|
|
||||||
|
deleteAll (head);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user