-
Notifications
You must be signed in to change notification settings - Fork 0
/
ll insertion at head,tail.cpp
77 lines (72 loc) · 1.57 KB
/
ll insertion at head,tail.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
#include <bits/stdc++.h>
using namespace std;
class node{
public:
int data;
node *next;
node(int a){
data=a;
next=NULL;
}
};
void insertAthead(node *&head, int val){ // node*(head is a pointer to the node) &head(this pointer is passed by reference tht means any change made within the function results in change of original pointer)
node *n= new node(val); //n is pointer to new node let n's next point to head. update the new head to n.
n->next=head;
head=n;
}
void insertattail(node *&head,int val){
node *n=new node(val);
if(head==NULL){
head=n;
return ;
}
node *temp=head;
while(temp->next!=NULL){
temp=temp->next;
}
temp->next=n;
}
void InsertAtNode(Node *&head, int position, int val)
{
Node *temp = head;
if (position == 1)
{
InsertAtHead(head, val);
return;
}
Node *n = new Node(val);
int count = 1;
while (count < position - 1)
{
temp = temp->nxt;
count++;
}
if (temp->nxt == NULL)
{
InsertAtTail(head, val);
return;
}
else
{
n->nxt = temp->nxt;
temp->nxt = n;
}
}
void display(node *head){
node *temp=head;//starting traversal from head with head remaining unchanged
while(temp!=NULL){
cout<<temp->data<<"->";
temp=temp->next;
}
cout<<"NULL"<<endl;
}
int main(){
node *head=NULL;
insertattail(head,1);
insertattail(head,2);
insertattail(head,3);
insertattail(head,4);
insertAthead(head,6);
display(head);
return 0;
}