Probleme bei Übung



  • Hallo!!

    In ein paar Tagen habe ich in der Schule einen Test. Und obwohl ich meine Hausübungen immer gemacht, hab ich jetzt beim lernen ein kleines Problem. Ich hab da ein paar Fehler von denen ich nicht weiß woher sie kommen, weil ich habe alles so gemacht wie in der Schule.

    #include <stdio.h>
    #include <stdlib.h>
    #include "liste.h"
    
    /*Das steht in liste.h:
    typedef struct ubung 
    {
    	struct ubung *alles;
    	int zahl;
    }all;
    
    all *head, *tail;*/
    
    all *insert(int key, struct ubung *x)
    {
    	all *y=(all *)malloc(sizeof(all));
    	y->zahl=key;
    	y->alles=x->alles;
    	x->alles=y;
    	return y;
    }
    
    void remove(all *x)
    {
    	all *y=x->alles;
    	x->alles=x->alles->alles;
    	free(y);
    }
    
    void visit(all *head) {
    	all *sehen=head;
    	while (sehen!=NULL)
    	{
    		printf("%d->",sehen->zahl);
    		sehen=sehen->alles;
    	}
    }
    
    void add(int c){
    	all *insert=(all *)malloc(sizeof(all));
    	insert->zahl=c;
    	insert->alles=head;
    	head=insert;
    }
    
    int main()
    {
    	int auswahl;
    	int c=0, key=0;
    	struct ubung *v;
    	all *x;
    	all *a, *b, *head, *tail;
    	a=(all *)malloc(sizeof(all));
    	a->zahl=1;
    	head = a;
    
    	b=(all *)malloc(sizeof(all));
    	b->zahl=5;
    	b->alles=NULL;
    	a->alles=b;
    	tail=b;
    
    	printf("1 Enfuehgen am Beginn der Liste\n");
    	printf("2 Ausgabe aller Knoten\n");
    	printf("3 Einfuehgen nach einem Knoten\n");
    	printf("4 Löschen eines Knotens nach einem bestimmten Knoten\n");
    	printf("5 Beenden\n");
    
    	printf("Was moechten sie tun?");
    	scanf("%d",&auswahl);
    
    	while(1)
    	{
    		if(auswahl==1)
    		{
    			add(c);
    		} 
    		else if (auswahl==2)
    		{
    			visit(head);
    		}
    		else if (auswahl==3)
    		{
    			remove(*x);
    		}
    		else if (auswahl==4)
    		{
    			insert(key, all);
    		}
    		else if (auswahl==5)
    		{
    		break;
    		printf("Bye");
    		}
    	}
    }
    

    Ich hoffe jemand kann mir helfen, denn wenn ich den Test verhaue, dann hab ich eine Nachprüfung und darauf, kann ich wirklich verzichten.

    Lg Doty



  • remove() gibts schon in stdio.h.
    Am einfachsten einen anderen Namen nehmen.

    In Zeile 84 ist der Stern wahrscheinlich überflüssig.

    In Zeile 88 hast du den Namen eines Typs als 2. Argument.
    Das geht gar nicht.

    Bring das mal in Ordnung, dann sollte es zumindest kompilieren.
    Alles weitere wird man sehen...



  • Hy!!

    Zuerst mal Danke...

    Nur leider funktioniert es immer noch nicht... Ich hab in der Zeile 88 all durch v ersetzt, aber es klappt nicht!!

    Lg Doty



  • Ich hab in der Zeile 88 all durch v ersetzt, aber es klappt nicht!!

    Also...
    Mein Kind...
    Was klappt denn nicht?


Anmelden zum Antworten