0% found this document useful (0 votes)
27 views2 pages

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
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views2 pages

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
We take content rights seriously. If you suspect this is your content, claim it here.
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