mirror of
https://github.com/TheAlgorithms/C
synced 2024-11-22 05:21:49 +03:00
Create middleElementInList.c
This commit is contained in:
parent
3f9ebd1b5e
commit
affe8213bb
70
data_structures/linked_list/middleElementInList.c
Normal file
70
data_structures/linked_list/middleElementInList.c
Normal file
@ -0,0 +1,70 @@
|
||||
#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");
|
||||
}
|
||||
|
||||
/* Drier 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user