/************************************************************
*******************SIMPLE LINKED LIST************************
*************************************************************
Author: Santosh Kumar G K
Date : 02/02/2012
*************************************************************/
#include<stdio.h>
#define DBUG_PRINT(x...) printf(x)
typedef int INT32;
typedef unsigned int UINT32;
typedef unsigned char UINT8;
typedef char INT8;
/*Global*/
typedef enum _tag_ReturnCode_
{
SUCCESS,
FAIL
}ERRORCODE;
typedef struct sample
{
UINT32 number;
struct temp *next;
}sample;
/*Function prototypes*/
ERRORCODE add_node( void );
void display_nodes( void );
void delete_node( void );
sample *HEAD;
/*Function definitions*/
INT32 main( INT32 argc,INT8 *argv[] )
{
UINT8 choice = 0,quit = 0;
while( quit == 0 )
{
DBUG_PRINT( "WELCOME TO LINKED LIST!!!!\n" );
DBUG_PRINT( "0: Quit\n1: Add node\n2: Display all nodes\n3: Delete a node\n" );
scanf( "%d",&choice );
switch( choice )
{
case 0:/*quit*/
quit = 1;
break;
case 1:/*add node*/
add_node( );
break;
case 2:/*display nodes*/
display_nodes( );
break;
case 3:/*delete node*/
delete_node( );
break;
default:
DBUG_PRINT("Wrong option!! Re-enter\n");
break;
}/*eof switch*/
}/*eof while*/
return SUCCESS;
}/*main*/
ERRORCODE add_node( void )
{
UINT32 number = 0;
sample *temp = NULL,*list = NULL;
ERRORCODE eReturnCode = SUCCESS;
DBUG_PRINT( "Enter the number to be updated in linked list\n" );
scanf( "%d",&number );
list = ( sample * )malloc( sizeof( sample ) );
if( list == NULL )
{
DBUG_PRINT( "Could not create the node\n" );
eReturnCode = FAIL;
}
else
{
list->number = number;
list->next = NULL;
if( HEAD == NULL )
{
HEAD = list;
}
else
{
temp = HEAD;
while( temp->next != NULL )
temp = temp->next;
temp->next = list;
}
}/*eof else*/
return eReturnCode;
}/*add_node*/
void display_nodes( void )
{
sample *temp;
UINT32 count = 0;
temp = HEAD;
if( HEAD == NULL )
{
DBUG_PRINT("No nodes to display!\n");
}
else
{
while( temp != NULL )
{
DBUG_PRINT( "[%d]: Node value = %d \n",++count,temp->number );
temp = temp->next;
}
}
}/*display_nodes*/
void delete_node( void )
{
UINT32 number = 0,search = 0;
sample *temp,*prev;
DBUG_PRINT( "Enter the number of which to delete\n" );
scanf( "%d",&number );
temp = HEAD;
while( temp != NULL )
{
if( ( temp->number == number ) && ( temp == HEAD ) )
{
prev = temp->next;
free( temp );
HEAD = prev;
search = 1;
break;
}
else if( temp->number == number )
{
prev->next = temp->next;
free( temp );
search = 1;
break;
}/*eof if*/
prev = temp;
temp = temp->next;
}/*eof while*/
if( search == 0 )
DBUG_PRINT( "No nodes found !\n" );
else
DBUG_PRINT( "Node found! Deleted \n" );
}/*delete_node*/
/*EOF FILE*/
*******************SIMPLE LINKED LIST************************
*************************************************************
Author: Santosh Kumar G K
Date : 02/02/2012
*************************************************************/
#include<stdio.h>
#define DBUG_PRINT(x...) printf(x)
typedef int INT32;
typedef unsigned int UINT32;
typedef unsigned char UINT8;
typedef char INT8;
/*Global*/
typedef enum _tag_ReturnCode_
{
SUCCESS,
FAIL
}ERRORCODE;
typedef struct sample
{
UINT32 number;
struct temp *next;
}sample;
/*Function prototypes*/
ERRORCODE add_node( void );
void display_nodes( void );
void delete_node( void );
sample *HEAD;
/*Function definitions*/
INT32 main( INT32 argc,INT8 *argv[] )
{
UINT8 choice = 0,quit = 0;
while( quit == 0 )
{
DBUG_PRINT( "WELCOME TO LINKED LIST!!!!\n" );
DBUG_PRINT( "0: Quit\n1: Add node\n2: Display all nodes\n3: Delete a node\n" );
scanf( "%d",&choice );
switch( choice )
{
case 0:/*quit*/
quit = 1;
break;
case 1:/*add node*/
add_node( );
break;
case 2:/*display nodes*/
display_nodes( );
break;
case 3:/*delete node*/
delete_node( );
break;
default:
DBUG_PRINT("Wrong option!! Re-enter\n");
break;
}/*eof switch*/
}/*eof while*/
return SUCCESS;
}/*main*/
ERRORCODE add_node( void )
{
UINT32 number = 0;
sample *temp = NULL,*list = NULL;
ERRORCODE eReturnCode = SUCCESS;
DBUG_PRINT( "Enter the number to be updated in linked list\n" );
scanf( "%d",&number );
list = ( sample * )malloc( sizeof( sample ) );
if( list == NULL )
{
DBUG_PRINT( "Could not create the node\n" );
eReturnCode = FAIL;
}
else
{
list->number = number;
list->next = NULL;
if( HEAD == NULL )
{
HEAD = list;
}
else
{
temp = HEAD;
while( temp->next != NULL )
temp = temp->next;
temp->next = list;
}
}/*eof else*/
return eReturnCode;
}/*add_node*/
void display_nodes( void )
{
sample *temp;
UINT32 count = 0;
temp = HEAD;
if( HEAD == NULL )
{
DBUG_PRINT("No nodes to display!\n");
}
else
{
while( temp != NULL )
{
DBUG_PRINT( "[%d]: Node value = %d \n",++count,temp->number );
temp = temp->next;
}
}
}/*display_nodes*/
void delete_node( void )
{
UINT32 number = 0,search = 0;
sample *temp,*prev;
DBUG_PRINT( "Enter the number of which to delete\n" );
scanf( "%d",&number );
temp = HEAD;
while( temp != NULL )
{
if( ( temp->number == number ) && ( temp == HEAD ) )
{
prev = temp->next;
free( temp );
HEAD = prev;
search = 1;
break;
}
else if( temp->number == number )
{
prev->next = temp->next;
free( temp );
search = 1;
break;
}/*eof if*/
prev = temp;
temp = temp->next;
}/*eof while*/
if( search == 0 )
DBUG_PRINT( "No nodes found !\n" );
else
DBUG_PRINT( "Node found! Deleted \n" );
}/*delete_node*/
/*EOF FILE*/