void srch(node *start)
{
int userdata; /* Data to be searched */
node *current; /* Node for travelling the linked list*/
current=start;
printf("\nEnter the data to search\n");
scanf("%d",&userdata);
while(current->next!=start)
{
if(current->data==userdata)
printf("\n %d %s %f\n",current->data);
current=current->next;
}
if(current->next==start && current->data==userdata)
printf("\n %d %s %f\n",current->data);
}
Showing posts with label Circular Linked List. Show all posts
Showing posts with label Circular Linked List. Show all posts
Tuesday, 12 July 2011
Search a circularly Linked List..
Delete a Node..
node* del(node *start)
{
int userdata; /* Data for deleting a node*/
node *delnode; /* Node to be deleted */
node *current; /* Node for travelling the linked list*/
printf("\nEnter the roll number whose node you want to delete\n");
scanf("%d",&userdata);
current=start;
if(current->data==userdata)
{
/*** Checking condition for deletion of first node ***/
delnode=current; /* Unnecessary step */
while(current->next!=start)
current=current->next;
current->next=start->next;
start=start->next;
free(delnode);
return(start);
}
else
{
while(current->next->next!=start)
{
/*** Checking condition for deletion of ***/
/*** all nodes except first and last node ***/
if(current->next->data==userdata)
{
delnode=current->next;
current->next=current->next->next;
free(delnode);
return(start);
}
current=current->next;
}
if(current->next->next==start && current->next->data==userdata)
{
/*** Checking condition for deletion of last node ***/
delnode=current->next;
free(delnode);
current->next=start;
return(start);
}
}
printf("\nMatch not found\n");
return(start);
}
{
int userdata; /* Data for deleting a node*/
node *delnode; /* Node to be deleted */
node *current; /* Node for travelling the linked list*/
printf("\nEnter the roll number whose node you want to delete\n");
scanf("%d",&userdata);
current=start;
if(current->data==userdata)
{
/*** Checking condition for deletion of first node ***/
delnode=current; /* Unnecessary step */
while(current->next!=start)
current=current->next;
current->next=start->next;
start=start->next;
free(delnode);
return(start);
}
else
{
while(current->next->next!=start)
{
/*** Checking condition for deletion of ***/
/*** all nodes except first and last node ***/
if(current->next->data==userdata)
{
delnode=current->next;
current->next=current->next->next;
free(delnode);
return(start);
}
current=current->next;
}
if(current->next->next==start && current->next->data==userdata)
{
/*** Checking condition for deletion of last node ***/
delnode=current->next;
free(delnode);
current->next=start;
return(start);
}
}
printf("\nMatch not found\n");
return(start);
}
Insert Before..
node* ins_bef(node *start)
{
int userdata; /* Data for inserting a node*/
node *newnode; /* New inputed node*/
node *current; /* Node for travelling the linked list*/
newnode=(node*)malloc(sizeof(node));
current=start;
printf("\nEnter the data before which you want to insert a node\n");
scanf("%d",&userdata);
if(current->data==userdata)
{
newnode->next=start;
while(current->next!=start)
current=current->next;
current->next=newnode;
start=newnode;
return(start);
}
while(current->next!=start)
{
if(current->next->data==userdata)
{
newnode->next=current->next;
current->next=newnode;
return(start);
}
current=current->next;
}
/*
If the function does not return from any return statement.
There is no match to insert before the input roll number.
*/
printf("\nMatch not found\n");
return(start);
}
{
int userdata; /* Data for inserting a node*/
node *newnode; /* New inputed node*/
node *current; /* Node for travelling the linked list*/
newnode=(node*)malloc(sizeof(node));
current=start;
printf("\nEnter the data before which you want to insert a node\n");
scanf("%d",&userdata);
if(current->data==userdata)
{
newnode->next=start;
while(current->next!=start)
current=current->next;
current->next=newnode;
start=newnode;
return(start);
}
while(current->next!=start)
{
if(current->next->data==userdata)
{
newnode->next=current->next;
current->next=newnode;
return(start);
}
current=current->next;
}
/*
If the function does not return from any return statement.
There is no match to insert before the input roll number.
*/
printf("\nMatch not found\n");
return(start);
}
Insert After..
void ins_aft(node *start)
{
int userdata; /* Data for inserting a node*/
int flag=0;
node *newnode; /* New inputed node*/
node *current; /* Node for travelling the linked list*/
newnode=(node*)malloc(sizeof(node));
printf("\nEnter the Data after which you want to insert a node\n");
scanf("%d",&userdata);
current=start;
while(current->next!=start)
{
/*** Insertion checking for all nodes except last ***/
if(current->data==userdata)
{
newnode->next=current->next;
current->next=newnode;
flag=1;
}
current=current->next;
}
if(flag==0 && current->next==start && current->data==userdata)
{
/*** Insertion checking for last nodes ***/
newnode->next=current->next; /** start is copied in newnode->next**/
current->next=newnode;
flag=1;
}
if(flag==0 && current->next==start)
printf("\nNo match found\n");
}
{
int userdata; /* Data for inserting a node*/
int flag=0;
node *newnode; /* New inputed node*/
node *current; /* Node for travelling the linked list*/
newnode=(node*)malloc(sizeof(node));
printf("\nEnter the Data after which you want to insert a node\n");
scanf("%d",&userdata);
current=start;
while(current->next!=start)
{
/*** Insertion checking for all nodes except last ***/
if(current->data==userdata)
{
newnode->next=current->next;
current->next=newnode;
flag=1;
}
current=current->next;
}
if(flag==0 && current->next==start && current->data==userdata)
{
/*** Insertion checking for last nodes ***/
newnode->next=current->next; /** start is copied in newnode->next**/
current->next=newnode;
flag=1;
}
if(flag==0 && current->next==start)
printf("\nNo match found\n");
}
Creating Circular Linked List !!!
struct list{
int data;
struct list *next;
};
/***** Redefining struct list as node *****/
typedef struct list node;
void init(node *start)
{
printf("\nEnter Data\n");
scanf("%d",&start->data);
start->next=start;
}
int data;
struct list *next;
};
/***** Redefining struct list as node *****/
typedef struct list node;
void init(node *start)
{
printf("\nEnter Data\n");
scanf("%d",&start->data);
start->next=start;
}
Subscribe to:
Posts (Atom)