/* C Program to create linklist, Traversal and deletion
*/
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node *next;
};
struct node * head=NULL;
void addNode(int x){
struct node *newNode,*p;
p=head;
newNode=(struct node *)malloc(sizeof(struct node));
newNode->data=x;
newNode->next=NULL;
if(head==NULL){ // if list is empty
head=newNode;
return;
}
else{
while(p->next!=NULL){ //find the last node
p=p->next;
}
p->next=newNode; //add node at the end
}
return;
}
void deleteNode(int x){
if(head==NULL){
printf("The list is empty\n");
return;
}
else{
struct node *p=head,*q;
q=p;
while(p!=NULL){
//if element is first
if(head->data==x){
if(head->next!=NULL){ //if there are more nodes
q=p;
p=p->next;
free(q);
head=p;
return;
}
else if(head->next==NULL){ //if head is the only node
free(p);
head=NULL;
return;
}
}
else if(p->data==x){
if(p->next!=NULL){ //if node is not the last node
q->next=p->next;
free(p);
return;
}
else if(p->next==NULL){ //if node is the last node
free(p);
q->next=NULL;
return;
}
}
q=p;
p=p->next;
}
printf("Element not found\n");
return;
}
}
void traverse(){
if(head==NULL){
printf("The list is empty\n");
}
else{
struct node *p=head;
do{
printf("%d ",p->data);
p=p->next;
}while(p!=NULL);
printf("\n");
}
}
int main(){
int choice;
int x;
while(1){
printf("1)Add node\n2)Delete node\n3)Traverse list\n4)exit\n");
scanf("%d",&choice);
switch(choice){
case 1:printf("Enter element to add\n");
scanf("%d",&x);
addNode(x);
break;
case 2:printf("Enter the node to be deleted\n");
scanf("%d",&x);
deleteNode(x);
break;
case 3:traverse();
break;
case 4:exit(1);
default:printf("Enter valid choice\n");
}
}
return 0;
}
Search Program on this blog
Thursday, 27 August 2015
Linklist: Create node , Traverse List, Delete Node
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment