-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcircular_linked_list.c
69 lines (60 loc) · 1.2 KB
/
circular_linked_list.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node *next;
};
struct node *head = NULL;
int nodeNumber = 0;
void insertAtPosition(int val, int pos){
struct node *newNode = malloc(sizeof(struct node));
newNode->data = val;
newNode->next = NULL;
int count = 0;
if(head == NULL){
head = newNode;
newNode->next = head;
nodeNumber++;
}
else{
struct node *current = head;
struct node *prev = NULL;
while(count < pos){
prev = current;
current = current->next;
count++;
}
newNode->next = current;
prev->next = newNode;
nodeNumber++;
}
}
void nextElement(int data){
struct node *temp = head;
while(temp->data != data){
temp = temp->next;
}
printf("\nNext element of %d is: %d", data, temp->next->data);
}
void display(){
if(head == NULL)
printf("Nothing to display.\n");
else{
struct node *temp = head;
int count;
while(count != nodeNumber){
printf("%d->", temp->data);
temp = temp->next;
count++;
}
printf("%d", head->data);
}
}
main(){
insertAtPosition(1,0);
insertAtPosition(2, 1);
insertAtPosition(7, 1);
insertAtPosition(3, 1);
display();
nextElement(2);
}