You are on page 1of 3

#include <stdio.

h>
#include <stdlib.h>

struct node {
int data;
struct node *next;
};

struct node *head, *newnode, *temp,*prevnode,*nextnode,*currentnode;


void list() {
int choice;
do {
newnode = (struct node *)malloc(sizeof(struct node));
printf("\nEnter the data: ");
scanf("%d", &newnode->data);
newnode->next = 0;
if (head == 0) {
head = temp = newnode;
} else {
temp->next = newnode;
temp = newnode;
}
printf("\nDo you want to continue (0,1)? ");
scanf("%d", &choice);
} while (choice);
}

void display() {
temp = head;
printf("\nThe list is ");
while (temp != 0) {
printf("%d ", temp->data);
temp = temp->next;
}
}
void ins_beg(){
int ele;
printf("\nEnter the value to be inserted at beginning:");scanf("%d",&ele);
newnode=(struct node*)malloc(sizeof(struct node));
newnode->data=ele;
newnode->next=head;
head=newnode;
}
void ins_end(){
int ele;
printf("\nEnter the element to be inserted at end :");scanf("%d",&ele);
newnode=(struct node*)malloc(sizeof(struct node));
newnode->data=ele;
newnode->next=0;
temp=head;
while(temp->next!=0){temp=temp->next;}
temp->next=newnode;
}
int count(){
int count=0;
temp=head;
while(temp!=0){temp=temp->next;count++;}
return count;
}
void ins_gpos(){
int pos,i=1,ele;
printf("\nEnter the position:");scanf("%d",&pos);
if(pos>count()){printf("\nposition exceeds the length");}
else{temp=head;
newnode=(struct node*)malloc(sizeof(struct node));
while(i<pos){
temp=temp->next;
i++;}
printf("\nEnter the element to be inserted at the given
position:");scanf("%d",&ele);
newnode->data=ele;
newnode->next=temp->next;
temp->next=newnode;

}
}
void delete_beg(){
temp=head;
int del_ele=temp->data;
head=head->next;
printf("The deleted element at the beginning is %d",del_ele);
free(temp);

}
void delete_end(){
temp=head;
while(temp->next!=0){
prevnode=temp;
temp=temp->next;
}
if(temp==head){head=0;}
else{int del_ele=temp->data;
printf("The deleted element at the end Is %d",del_ele);
prevnode->next=0;}
free(temp);

}
void del_gpos(){
int pos,i=1;
temp=head;
printf("Enter the position:");scanf("%d",&pos);
while(i<pos-1){
temp=temp->next;
i++;
}
nextnode=temp->next;
int del_ele=nextnode->data;printf("The deleted element at given position is
%d",del_ele);
temp->next=nextnode->next;
free(nextnode);
}
void reverse(){
prevnode=0;
currentnode=nextnode=head;
while(nextnode!=0){
nextnode=nextnode->next;
currentnode->next=prevnode;
prevnode=currentnode;
currentnode=nextnode;
}head=prevnode;
}
int main() {
list();
reverse();
display();
return 0;
}

You might also like