0 points

Implementation of linked list in C.


dashboard

Sun May 17 2020 04:14:26 GMT+0000 (UTC)

Posted by @Paritosh #C

#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;
}
content_copy Copy

Various operations related to linked lists are performed with C.