-
Notifications
You must be signed in to change notification settings - Fork 0
/
LIK2.CPP
137 lines (120 loc) · 2.63 KB
/
LIK2.CPP
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
Structure/Class named Node having 2 variables first is data and next is Node*
which will be storing the data and the pointer to the next
// Insert - void return type having arguments as head as double pointer and data
step 1 - make a new node using new operator new and new_node->data = x the variable holding the data
step 2 - new_node->next=NULL;
step 3 - if node is null then *head = new_node
step 4 - while(last->next=NULL) where *last=*head {last=last->next}
step 5 - last->next=new_node
Done
// Searching the element we have ,
step: 1) starting the entrance through traverse
step: 2) head->data == found the element then found the element
else not found
head=head->next
*/
#include<iostream.h>
#include<alloc.h>
#include<process.h>
#include<conio.h>
struct Node
{
int data;
Node* next;
};
void append(Node** head , int x)
{
Node * new_node = new Node();
Node *last = *head;
new_node->data = x;
new_node->next=NULL;
if(*head==NULL)
{
*head=new_node;
return;
}
while(last->next!=NULL)
last=last->next;
last->next=new_node;
return;
}
void Print(Node* head)
{
int count=0;
cout<<"\nList Is : - ";
while(head!= NULL)
{
cout<<head->data<<"\t";
head=head->next;
count++;
}
cout<<"\n";
cout<<"Length Of The List "<<count<<" & for middle element "<<count/2<<" \n";
}
void Find(Node* head,int find)
{
while(head!=NULL)
{
if(head->data==find)
{
cout<<"Element Found";
}
head=head->next;
}
}
void Delete(Node * head , Node *n)
{
if(head==n)
{
if(head->next==NULL)
{
cout<<"There is only one node cant be made empty";
return ;
}
head->data=head->next->data;
n=head->next;
head->next=head->next->next;
free(n);
return ;
}
Node *prev=head;
while(prev->next!= NULL && prev->next!= n)
prev = prev->next;
if(prev->next == NULL)
{
cout<<"\n GIven Node is Not Present";
return;
}
prev->next=prev->next->next;
free(n);
return;
}
int main()
{
clrscr();
//empty list
Node* head=NULL;
append(&head,14);
append(&head,25);
append(&head,37);
append(&head,83);
append(&head,12);
append(&head,20);
/*
length with the help of the while statement through travesing ,
traversing is done in a fashion like
while(head!= NULL)
{
cout<<head->data;
head=head->next;
}
putting a counter varible with it gives the total length of the linked list
*/
Print(head);
Find(head,25);
Delete(head,head->next->next);
Print(head);
getch();
return 0;
}