Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Einfach Verkettete Listen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Einfach Verkettete Listen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
snowisblack
Grünschnabel


Dabei seit: 31.01.2018
Beiträge: 1

Einfach Verkettete Listen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo an alle,
Ich habe folgende Aufgabe zu bewältigen:
Implementieren Sie für eine einfach verkettete Liste folgende zwei Funktionen:
- void insert sorted (int val), zum sortierten Einfügen eines neuen Elements val und
- struct node *reverse(), zur Rückgabe einer invertierten Liste ohne die Liste zu verändern

Nun die erste Aussage habe ich so interpretier, dass einfach ein Element angehangen werden soll, was dann den Platz des vorletzten Elementes einnimmt.
Nur die zweite Aussage verstehe ich nicht so richtig. Soll ich einfach die Liste ausgeben oder soll die Funktion etwas anderes machen?
Danke schon einmal für eure Antworten!


Meine Ideen:
Hier mein bisheriger Ansatz:
#include<stdio.h>
#include<stdlib.h>

typedef struct
{
int data;
struct node *next;
}node;

node *addElement(int val)
{
node *nextElement = NULL;
if ((nextElement = malloc(sizeof(node)))!=0){
nextElement->data = val;
nextElement->next = NULL;
return nextElement;}
else {return NULL;}
}
node *head,*tail;
void insertFirst(int val)
{
node *p = addElement(val);
p->next = head;
head = p;
}

void insertLast(int val)
{
node *p = addElement(val);
if(head == NULL){head = p;}else{tail=p;}
tail=p;
}
void printList(void)
{
node *tmp = head;
printf("(");
while(tmp != NULL)
{
printf(" %d ",tmp->data);
tmp = tmp->next;
}
printf(")\n");
}

int main(int argc,char argv[])
{
int n;int i = 1;int a;
printf("Anzahl der Werte ihrer Liste: ");
scanf("%d",&n);
printf("%d. Wert: ",i);
scanf("%d",&a);
node *Element[n], *aktuellesElement;
insertFirst(a);
i++;
while (i<n)
{
printf("%d. Wert: ",i);
scanf("%d",&a);
Element[i]=addElement(a);
if(i>=3)Element[i-1]->next = Element[i];
i++;
}
printf("%d. Wert: ",i);
scanf("%d",&a);
insertLast(a);
head->next = Element[2];
Element[i-1]->next = tail;
tail->next = NULL;
printList();
}

Falls es allgemeine Verbesserungsvorschläge gibt bin ich dafür auch gerne offen! (Bin noch nicht allzu lange am C-Programmieren)
31.01.2018 22:40 snowisblack ist offline Beiträge von snowisblack suchen Nehmen Sie snowisblack in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Einfach Verkettete Listen