#include <stdio.h>
#include <stdlib.h>
struct Data
{
int x;
int y;
struct Data * next;
};
void AddBeginning ( Data **, Data **, Data ** );
void AddEnd ( Data **, Data **, Data ** );
void Insert ();
void Remove ();
void ShowList ( Data ** );
void Search ();
int main ( void )
{
int menu = 0;
struct Data * head, * prev, * current;
head = NULL;
while ( menu != 7 )
{
printf ( "Add at beginning - 1\nAdd at end- 2\nInsert - 3\nRemove - 4\nSearch - 5\nShow - 6\nEnd Program - 7\n" );
scanf ( "%d", &menu );
switch ( menu )
{
case 1:
AddBeginning ( &head, &prev, ¤t );
break;
case 2:
AddEnd ( &head, &prev, ¤t );
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
ShowList ( &head );
break;
default:
break;
}
}
return 0;
}
void AddBeginning ( struct Data ** head, struct Data ** prev, struct Data ** current )
{
* current = ( struct Data * )malloc ( sizeof ( struct Data ) );
scanf ( "%d", &(* current )->x );
scanf ( "%d", &(* current )->y );
if ( * head == NULL ) //Ako je već pozvana funkcija AddEnd tada head nije NULL
{
* head = * current;
(* current)->next = NULL;
}
else
{
* head = *current;
(* head)->next = * prev; //To pravi problem ovdje jer * prev nije inicijaliziran na * head
}
* prev = * head; //Kako ova funkcija nikada nije izvedena ni *prev nije incijaliziran na *head
}
void AddEnd ( struct Data ** head, struct Data ** prev, struct Data ** current )
{
* current = ( struct Data * )malloc ( sizeof ( struct Data ) );
scanf ( "%d", &(* current )->x );
scanf ( "%d", &(* current )->y );
if ( * head == NULL ) //Head nije NULL ako je već pozvan funkcija AddBeginning
* head = * current;
else
(* prev )->next = *current; //Ista stvar ovdje, ako je pozvan funkcija AddBeginning tada * prev nije inicijaliziran na * current
(* current )->next = NULL;
* prev = * current;
}
void ShowList ( struct Data ** head )
{
struct Data * current;
current = *head;
while ( current != NULL )
{
printf ( "x = %d y = %d\n", current->x, current->y );
current = current->next;
}
}
[Ovu poruku je menjao dontoo dana 22.03.2010. u 13:45 GMT+1]