online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
/****************************************************************************** Online C Compiler. Code, Compile, Run and Debug C program online. Write your code in this editor and press "Run" button to compile and execute it. *******************************************************************************/ #include <stdio.h> #include <stdlib.h> // Struktur für ein Listenknoten typedef struct Node { int data; struct Node* next; } Node; // Funktion zum Erstellen eines neuen Knotens Node* createNode(int data) { Node* newNode = (Node*)malloc(sizeof(Node)); if (newNode == NULL) { printf("Fehler: Speicher konnte nicht allokiert werden.\n"); exit(1); } newNode->data = data; newNode->next = NULL; return newNode; } // Funktion zum Einfügen eines neuen Knotens am Anfang der Liste Node* insertNode(Node* head, int data) { Node* newNode = createNode(data); if (head == NULL) { head = newNode; } else { newNode->next = head; head = newNode; } printf("Knoten mit Wert %d wurde eingefügt.\n", data); return head; } // Funktion zum Suchen eines Knotens mit gegebenem Wert Node* searchNode(Node* head, int data) { Node* currentNode = head; while (currentNode != NULL) { if (currentNode->data == data) { printf("Knoten mit Wert %d wurde gefunden.\n", data); return currentNode; } currentNode = currentNode->next; } printf("Knoten mit Wert %d wurde nicht gefunden.\n", data); return NULL; } // Funktion zum Löschen eines Knotens mit gegebenem Wert Node* deleteNode(Node* head, int data) { Node* currentNode = head; Node* prevNode = NULL; while (currentNode != NULL) { if (currentNode->data == data) { if (prevNode == NULL) { head = currentNode->next; } else { prevNode->next = currentNode->next; } printf("Knoten mit Wert %d wurde gelöscht.\n", data); free(currentNode); return head; } prevNode = currentNode; currentNode = currentNode->next; } printf("Knoten mit Wert %d wurde nicht gefunden und konnte nicht gelöscht werden.\n", data); return head; } // Funktion zum Ändern des Werts eines Knotens mit gegebenem Wert void modifyNode(Node* head, int data, int newData) { Node* node = searchNode(head, data); if (node != NULL) { node->data = newData; printf("Wert des Knotens mit Wert %d wurde zu %d geändert.\n", data, newData); } else { printf("Knoten mit Wert %d konnte nicht gefunden und nicht geändert werden.\n", data); } } // Funktion zum Anzeigen der gesamten Liste void displayList(Node* head) { Node* currentNode = head; if (currentNode == NULL) { printf("Die Liste ist leer.\n"); } else { printf("Liste: "); while (currentNode != NULL) { printf("%d ", currentNode->data); currentNode = currentNode->next; } printf("\n"); } } // Funktion zum Freigeben des Speichers der gesamten Liste void freeList(Node* head) { Node* currentNode = head; Node* tempNode = NULL; while (currentNode != NULL) { tempNode = currentNode; currentNode = currentNode->next; free(tempNode); } } int main() { Node* head = NULL; head = insertNode(head, 10); head = insertNode(head, 20); head = insertNode(head, 30); displayList(head); searchNode(head, 20); searchNode(head, 40); head = deleteNode(head, 20); displayList(head); modifyNode(head, 10, 50); displayList(head); freeList(head); return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue