#include <stdio.h>
#include <stdlib.h>
struct Node{
int data;
struct Node* next;
};
struct Node* head;
void insert(int j){
struct Node* temp = (struct Node*)malloc(sizeof(struct Node));
temp->data = j;
temp->next = head;
if(head!=NULL) temp->next=head;
head = temp;
}
void print()
{
// printf("The list is ")
struct Node*temp = head;
do{
printf("%d",temp->data);
temp = temp->next;
printf("\t");
}while(temp->next!=NULL);
}
int length (struct Node* head){
struct Node*current = head;
int count=0;
while(current!=NULL){
count++;
current=current->next;
}
return count;
}
void delete(int p){
struct Node* pointer = head;
if(p==1){
head = pointer -> next;
free(pointer);
return;
}
int i;
for(i=0;i<p-2;i++){
pointer = pointer->next;
}
struct Node* pointer2 = pointer->next;
pointer->next = pointer2->next;
//pointer2 = pointer->next;
free(pointer2);
}
struct Node* reverse(struct Node*head){
struct Node *current,*prev,*next;
current = head;
prev = NULL;
while(current!=NULL){
next = current->next;
current->next = prev;
prev = current;
current = next;
}
head = prev;
return head;
}
int main()
{
/* printf("Hello world!\n");
return 0;*/
head=NULL;
printf("How many numbers\n");
int i,j,n;
scanf("%d",&n);
printf("Enter the numbers\n");
for(i=0;i<n;i++){
scanf("%d",&j);
insert(j);
}
print();
int l,p;
l=length(head);
printf("The length is %d\n",l);
printf("Enter the position you want to delete");
scanf("%d",&p);
delete(p);
print();
head = reverse(head);
printf("\nThe reversed list is"); print();
return 0;
}
Comments