Create and Insert data in circular linked list

 

#include <stdio.h>

#include <stdlib.h>

// Create a node

struct Node {

  int data;

  struct Node* next;

};

// Insert at the beginning

void insertAtBeginning(struct Node** head_ref, int new_data) {

  // Allocate memory to a node

  struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));

  // insert the data

  new_node->data = new_data;

  new_node->next = (*head_ref);

  // Move head to new node

  (*head_ref) = new_node;

}

// Insert a node after a node

void insertAfter(struct Node* prev_node, int new_data) {

  if (prev_node == NULL) {

  printf("the given previous node cannot be NULL");

  return;

  }

  struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));

  new_node->data = new_data;

  new_node->next = prev_node->next;

  prev_node->next = new_node;

}

// Insert the the end

void insertAtEnd(struct Node** head_ref, int new_data) {

  struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));

  struct Node* last = *head_ref; /* used in step 5*/

  new_node->data = new_data;

  new_node->next = NULL;

  if (*head_ref == NULL) {

  *head_ref = new_node;

  return;

  }

  while (last->next != NULL) last = last->next;

  last->next = new_node;

  return;

}

// Print the linked list

void printList(struct Node* node) {

  while (node != NULL) {

  printf(" %d ", node->data);

  node = node->next;

  }

}

int main() {

  struct Node* head = NULL;

  insertAtEnd(&head, 1);

  insertAtBeginning(&head, 2);

  insertAtBeginning(&head, 3);

  insertAtEnd(&head, 4);

  insertAfter(head->next, 5);

  printf("Linked l

ist: ");

  printList(head);

}

Linked list: 3 2 5 1 4

Comments

Popular posts from this blog

Week2

Week13