Einzelnen Beitrag anzeigen
Ungelesen 07.11.10, 21:02   #4
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.824
Bedankt: 1.701
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Vermutlich nicht genau das was du machen musst, aber ich musste sowas ähnliches auch mal für die FH machen vllt kannst du damit ja was anfangen:

Code:

#include <stdio.h>           

#include <stdlib.h>

struct eintrag    // Deklaration eines Listenelements 

{

	char wort[20]; 

	struct eintrag *next; 

}; 

typedef struct eintrag element; 

struct eintrag *liste; //Zeiger auf den Anfang der Liste



element *erstellen (element* ptr);

element *hinzufuegen (element* ptr);

element *loeschen (element* ptr);

void anzeigen (element* ptr);

int main (void)

{

	char c;

	do

	{

		printf ("\tHAUPTMENUE:\n\n\t1 - Liste erstellen\

				\n\t2 - Element hinzufuegen\n\t3 - Element loeschen\

 				\n\t4 - Programm beenden\n");

		c=getchar();

		

		switch (c)

		{

		case '1': liste = (element*)malloc(sizeof(element));

			getchar();			

			erstellen (liste);

			anzeigen (liste);

			break;

		case '2': getchar(); 

			anzeigen (liste);			

			hinzufuegen (liste);

			anzeigen (liste);

			break;

		case '3': getchar(); 

			anzeigen (liste);			

			loeschen (liste);

			anzeigen (liste);

			break; 

		}

	}

	while (c!='4'); 

}



element *erstellen (element* ptr)

{

	printf ("Wort eingeben ('ENDE' fuer Ende der Liste): ");

	scanf("%s", ptr->wort); //Wort einlesen	
	if (strcmp(ptr->wort,"ENDE")==0) ptr->next=NULL;

							

	else

	{

		ptr->next = (element*) malloc(sizeof(element));

		erstellen (ptr->next); 

	}

	return;

}







void anzeigen (element* ptr)

{

	if (liste==NULL)return;

	if (ptr->next != NULL)

	{

		printf ("%s\n",ptr->wort);

		anzeigen (ptr->next);

	} 

	return; 

}









element *hinzufuegen (element* ptr)

{

struct eintrag* ptrn;

struct eintrag* ptrv;

char d [20];

if (liste==NULL)

{

	printf ("Es wurde noch keine Liste angelegt, sie muessen zuerst eine Liste anlegen\n");

	return;

}

	printf ("Vor welchem Element soll das Wort eingefuegt werden?:");

	fflush (stdin);

	gets (d);

	do

	{

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

		{

			ptrn=ptr;

			ptr=(element*)malloc(sizeof(element));

			printf ("Wort eingeben: "); 

			scanf("%s", ptr->wort);

			ptr->next=ptrn;

			if (ptrn!=liste)ptrv->next=ptr;

			if (ptrn==liste)liste=ptr;

			return;

		}

		ptrv=ptr;

		ptr=ptr->next;

	}

	while (ptr->next!=NULL);

	

	printf("Element nicht gefunden\n");

	return;

}

element *loeschen (element* ptr)

{

struct eintrag* ptrn;

struct eintrag* ptrv;

char d [20];

if (liste==NULL)

{

	printf ("Sie muessen zuerst eine Liste anlegen\n");

	return;

}

	printf ("Welches Element soll geloescht werden?:");

	fflush (stdin);

	gets (d);

	ptrv=ptr;//ersten Zeiger in pointerv laden

	do

	{

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

		{

			ptrn=ptr->next;

			if ((ptrv!=liste)||(strcmp(ptrv->wort,d)))ptrv->next=ptrn;

			else liste=ptrn;

			free (ptr);

			ptr=liste;

			if (strcmp(ptr->wort,"ENDE")==0)

			{

				liste=NULL;

				free (ptrn);
				fflush (stdin);

			}

			return;

		}

		ptrv=ptr;

		ptr=ptr->next;

	}

	while (ptr->next!=NULL);

}
Anmerkung: Ich habe das a) unter Linux zusammengehackt und b) jetzt nicht noch mal geteste ob es sich fehlerfrei kompilieren lässt. Außerdem meine ich mich zu erinnern da das ein oder andere Problem mit ungewünschten ausgaben u.ä gehabt zu haben aber na ja

@PornoPenner war bei mir aber auch nicht anderst das ist in der Nacht vor der Abgabe entstanden
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten