Beiträge von iss_matrix

    Leute habe das Problem gelöst habe nun ein Satck Problem mit meinem Programm:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>

    #define Null 0

    struct list_element{
    char element[40]; /*Element für diesen Knoten*/
    struct list_element *next; /*Zieger auf den nächsten Knoten*/
    };

    typedef struct list_element knoten; /*Verienbarung des Strukturtyps */

    int menu(void){

    int wahl;

    do{
    printf("\nHaupmenue:\n");
    printf("\n1 - Liste erstellen ");
    printf("\n2 - Element hinzufuegen");
    printf("\n3 - Element loeschen");
    printf("\n4 - Programm beenden");
    printf("\nBitte geben Sie ihre Auswahl ein (1, 2, 3 oder 4) ein:");
    scanf("%d", &wahl);
    if(wahl < 1 || wahl > 4)
    printf("\n Fehler - Bitte geben Sie es erneut ein\n");
    }

    while((wahl < 1)|| (wahl > 4));
    printf("\n");
    return(wahl);
    }

    void erstellen(knoten *datensatz){

    printf("Element(fuer Beendigung ENDE eingeben):");
    scanf("%\n", datensatz->element);

    if(strcmp(datensatz->element,"ENDE")==0)
    datensatz->next = NULL;
    else{
    datensatz->next=(knoten*)malloc(sizeof(knoten));
    erstellen(datensatz->next);
    }

    return ;

    }

    void anzeigen(knoten *datensatz){

    if (datensatz->next != NULL){
    printf("%s\n", datensatz->element);
    anzeigen(datensatz->next);
    }
    return;

    }

    knoten *einfuegen(knoten *erster){

    knoten *locate(knoten*, char[]);
    knoten *neu_satz;
    knoten *tag;
    char neu_element[40];
    char ziel[40];

    printf("Neues Element: ");
    scanf("%\n", neu_element);
    printf("Vor folgendem Element einfügen(ENDE eingeben, wenn vor letztes): ");
    scanf("%\n", ziel);

    if(strcmpi(erster->element, ziel) == 0){

    neu_satz = (knoten*)malloc(sizeof(knoten));

    strcpy(neu_satz->element, neu_element);

    neu_satz->next = erster;

    erster = neu_satz;
    }

    else{

    tag = locate(erster, ziel);

    if(tag == NULL)
    printf("\n Keine Entsprechung gefunden - Bitte erneut versuchen\n");

    else{

    neu_satz = (knoten*)malloc(sizeof(knoten));

    strcpy(neu_satz->element, neu_element);

    neu_satz->next = tag->next;

    tag->next = neu_satz;
    }
    }

    return (erster);
    }

    knoten *locate(knoten *datensatz, char ziel[]){

    if(strcmpi(datensatz->next->element, ziel) == 0)

    return(datensatz);

    else{
    if(datensatz->next->next == NULL)
    return(NULL);
    else
    locate(datensatz->next, ziel);
    }
    }

    knoten *loeschen(knoten *erster){

    knoten *locate(knoten*, char[]);
    knoten *tag;

    knoten *temp;
    char ziel[40];

    printf("Zu loeschendes Element bitte eintippen: ");
    scanf("%[^\n]", ziel);

    if(strcmpi(erster->element, ziel) == 0){

    temp = erster->next;

    free(erster);

    erster = temp;
    }

    else
    tag = locate(erster, ziel);

    if(tag == NULL)
    printf("\nKeine Entsprechung gefunden - Bitte erneut versuche\n");

    else{
    temp = tag->next->next;

    free(tag->next);

    tag->next = temp;
    }

    return (erster);
    }

    main(){

    knoten *start; /*Zieger auf den Listenanfang*/
    int wahl; /*Vereinbarung einer lokalen Veriablen*/

    int menu(void); /*Funktionsvereinbarung*/
    void erstellen(knoten *ptr); /*Funktionsvereinbarung*/
    knoten *einfuegen(knoten *ptr); /*Funktionsvereinbarung*/
    knoten *loesche(knoten *ptr); /*Funktionsvereinbarung*/
    void anzeigen(knoten *ptr); /*Funktionsvereinbarung*/

    do{
    wahl = menu();

    switch(wahl){

    case 1: /*Liste erstellen*/

    start = (knoten *)malloc(sizeof(knoten)); /*Für den ersten Knoten Speicherplatz zuweisen*/

    erstellen(start);
    printf("\n");
    anzeigen(start);
    continue;

    case 2: /* Element hinzufügen*/
    start = einfuegen(start);
    printf("\n");
    anzeigen(start);
    continue;

    case 3: /*Ein Element enntfernen*/
    start = loeschen(start);
    printf("\n");
    anzeigen(start);
    continue;

    default: /*Programm beenden*/
    printf("\n\tEnde des Programms\n");

    }
    }

    while( wahl != 4);
    }

    bitte um Hilfe!!!!

    Hallo Leute habe ein Programm geschrieben mit ner Verketteten Liste jedenfalls wollte ich meine funktion del_item prüfen aber jedesmal gschmeisst er mich raus und beim debugger gibt er mir nichts an bitte hilfe

    achso wenn die Liste Leer ist dann gibt er mir **** s. u.
    #include <stdio.h> // Bibliothek fuer printf, scanf, ...
    #include <conio.h> // Bibliothek fuer getch, gets, ...
    #include <string.h> // strcmp ist enthalten
    #include <stdlib.h> // malloc ist dieser Bibliothek enthalten


    //struct
    struct eintrag{
    char wort[20];
    struct eintrag *next;
    } ;

    typedef struct eintrag element ; // vor definiert damit kann ich nur Element schreiben
    struct eintrag *liste ; // kann man auch so schreiben element *liste


    void anzeigen (element* ptr){

    if (ptr->next != NULL) {
    printf ("%s\n",ptr->wort);
    anzeigen (ptr->next);
    }
    return;
    }


    void erstellen (element* ptr){

    printf ("Bitte geben Sie das Wort ein ('ENDE' fuer Ende der Liste): ");
    scanf("%s", ptr->wort);
    if (strcmp(ptr->wort,"ENDE")==0) ptr->next=NULL;
    else {
    ptr->next = (element*) malloc(sizeof(element));
    erstellen (ptr->next);

    }

    return;

    }


    element *delpointer;


    int del_item(element* ptr,char* item){

    delpointer=ptr->next; ***** hier ein DEbug keine Ahnung wieso

    if(ptr->next==NULL)

    {

    return 0;

    }

    if(strcmp(ptr->wort,item)==0)

    {

    liste=ptr->next;

    free(ptr);

    return 1;

    }

    else if(strcmp(delpointer->wort,item)==0)

    {

    ptr->next=delpointer->next;

    free(delpointer);

    return 1;

    }

    else

    {

    del_item(ptr->next,item);

    }

    }


    void main(){


    int eingabe;

    for(eingabe; eingabe !=4;){
    //menu
    printf("\nBitte waehlen Sie:\n1 - Liste erstellen\n2 - Element hinzufuegen\n");
    printf("3 - Element loeschen\n4 - Programm beenden\nAuswahl: ");
    scanf("%i",&eingabe);

    if(eingabe == 1){

    liste = (element*)malloc(sizeof(element));
    erstellen(liste);

    }

    if(eingabe==2){


    }

    if(eingabe==3) {

    char* item;

    printf("\nBitte geben Sie das zu löschende Element ein: ");
    scanf("%s",&item);
    del_item(liste,item);

    }

    if(eingabe==4) {


    }


    }


    bitte um Hilfe bin am verzweifeln!!!!!!

    Danke
    }