0% found this document useful (0 votes)
20 views

Singly Linked List

The document contains C code to find the middle element of a linked list. It defines a Node struct, push and print functions to create and display a linked list, and a printMiddle function to find the middle element using fast/slow pointer approach.

Uploaded by

Prathusha Reddy
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Singly Linked List

The document contains C code to find the middle element of a linked list. It defines a Node struct, push and print functions to create and display a linked list, and a printMiddle function to find the middle element using fast/slow pointer approach.

Uploaded by

Prathusha Reddy
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

#include<stdio.

h>
#include<stdlib.h>

/* Link list node */


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

/* Function to get the middle of the linked list*/


void printMiddle(struct Node *head)
{
struct Node *slow_ptr = head;
struct Node *fast_ptr = head;

if (head!=NULL)
{
while (fast_ptr != NULL && fast_ptr->next != NULL)
{
fast_ptr = fast_ptr->next->next;
slow_ptr = slow_ptr->next;
}
printf("The middle element is [%d]\n\n", slow_ptr->data);
}
}

void push(struct Node** head_ref, int new_data)


{
/* allocate node */
struct Node* new_node =
(struct Node*) malloc(sizeof(struct Node));

/* put in the data */


new_node->data = new_data;

/* link the old list off the new node */


new_node->next = (*head_ref);

/* move the head to point to the new node */


(*head_ref) = new_node;
}

// A utility function to print a given linked list


void printList(struct Node *ptr)
{
while (ptr != NULL)
{
printf("%d->", ptr->data);
ptr = ptr->next;
}
printf("NULL\n");
}

/* Driver program to test above function*/


int main()
{
/* Start with the empty list */
struct Node* head = NULL;
int i;

for (i=5; i>0; i--)


{
push(&head, i);
printList(head);
printMiddle(head);
}

return 0;
}

You might also like