Skip to content

Commit d19605a

Browse files
Merge pull request Nivedita-coder#32 from aman-raza/patch-2
Linked_List.c
2 parents 968bed2 + d03b17f commit d19605a

1 file changed

Lines changed: 160 additions & 0 deletions

File tree

‎LinkedList.c‎

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
typedef struct ListNode
5+
{
6+
int data;
7+
struct ListNode *next;
8+
}node;
9+
10+
node *createList(node *head, int num);
11+
node *insertNodeAtTail(node *head, int data);
12+
node *insertNodeAtHead(node *head, int data);
13+
void DeleteNode(node *head, int pos);
14+
void traverse(node *head);
15+
16+
node *createList(node *head, int num)
17+
{
18+
node *temp, *newNode;
19+
int data;
20+
if(head != NULL)
21+
{
22+
printf("Node already exists");
23+
return head;
24+
}
25+
for(int i=0; i<num; i++)
26+
{
27+
printf("Enter data: ");
28+
scanf("%d",&data);
29+
newNode = (node*)malloc(sizeof(node));
30+
newNode->data = data;
31+
newNode->next = NULL;
32+
if(head == NULL)
33+
{
34+
head = newNode;
35+
temp = newNode;
36+
}
37+
else
38+
{
39+
temp->next = newNode;
40+
temp = newNode;
41+
}
42+
}
43+
return head;
44+
}
45+
node *insertNodeAtTail (node *head, int data)
46+
{
47+
node* newNode, *temp;
48+
newNode = (node*)malloc(sizeof(node));
49+
newNode->data = data;
50+
if(head == NULL)
51+
{
52+
head = newNode;
53+
newNode->next = NULL;
54+
return head;
55+
}
56+
temp = head;
57+
while(temp->next != NULL)
58+
{
59+
temp = temp->next;
60+
}
61+
temp->next = newNode;
62+
newNode->next = NULL;
63+
return head;
64+
}
65+
node *insertNodeAtHead(node *head, int data)
66+
{
67+
node *newNode = malloc(sizeof(newNode));
68+
newNode->data = data;
69+
if(head == NULL)
70+
{
71+
head = newNode;
72+
return head;
73+
}
74+
newNode->next = head;
75+
head = newNode;
76+
return head;
77+
}
78+
void traverse(node *head)
79+
{
80+
node *temp;
81+
temp = head;
82+
while (temp != NULL)
83+
{
84+
printf(" --> %d",temp->data);
85+
temp = temp->next;
86+
}
87+
printf("\n");
88+
}
89+
void DeleteNode(node *head, int pos)
90+
{
91+
node *temp, *temp1;
92+
int cnt = 1;
93+
if(head == NULL)
94+
{
95+
return;
96+
}
97+
if(pos == 1)
98+
{
99+
temp = head;
100+
head = head->next;
101+
free(temp);
102+
}
103+
temp = head;
104+
while(cnt < pos-1 && temp != NULL)
105+
{
106+
temp = temp->next;
107+
cnt++;
108+
}
109+
if(temp != NULL)
110+
{
111+
temp1 = temp->next;
112+
temp->next = temp1->next;
113+
free(temp1);
114+
}
115+
}
116+
117+
int main()
118+
{
119+
node *head = NULL;
120+
int choice, size, data, pos;
121+
while(1)
122+
{
123+
printf("\n1. Create a List \n2. Insert a node after the linked list");
124+
printf("\n3. Insert a node before the linked lis \n4. Traverse and print the content of the list");
125+
printf("\n5. Delete Node\n6. Exit \nEnter your choice: ");
126+
scanf("%d",&choice);
127+
switch(choice)
128+
{
129+
case 1:
130+
printf("Enter size of the list: ");
131+
scanf("%d",&size);
132+
head = createList(head, size);
133+
break;
134+
case 2:
135+
printf("Enter the data of the node: ");
136+
scanf("%d",&data);
137+
head = insertNodeAtTail(head, data);
138+
break;
139+
case 3:
140+
printf("Enter the data of the node: ");
141+
scanf("%d",&data);
142+
head = insertNodeAtHead(head, data);
143+
break;
144+
case 4:
145+
traverse(head);
146+
break;
147+
case 5:
148+
printf("Enter the position no: ");
149+
scanf("%d", &pos);
150+
DeleteNode(head, pos);
151+
break;
152+
case 6:
153+
printf("End");
154+
exit(0);
155+
default:
156+
printf("Invalid Input");
157+
}
158+
}
159+
return 0;
160+
}

0 commit comments

Comments
 (0)