Insert Node at Last / End Position in Singly Linked List Inserting Node at Start in The SLL (Steps)
Insert Node at Last / End Position in Singly Linked List Inserting Node at Start in The SLL (Steps)
Create New Node 2. Fill Data into Data Field 3. Make its Pointer or Next Field as NULL 4. Node is to be inserted at Last Position so we need to traverse SLL upto Last Node. 5. Make link between last node and newnode
void insert_at_end() { struct node *new_node,*current; new_node=(struct node *)malloc(sizeof(struct node)); if(new_node == NULL) printf("nFailed to Allocate Memory"); printf("nEnter the data : "); scanf("%d",&new_node->data); new_node->next=NULL; if(start==NULL) { start=new_node; current=new_node; } else { temp = start; while(temp->next!=NULL) { temp = temp->next; } temp->next = new_node; } }
Diagram :
Attention : 1. If starting node is not available then Start = NULL then following part is executed
if(start==NULL) { start=new_node; current=new_node; }
2. If we have previously created First or starting node then else part will be executed to insert node at start 3. Traverse Upto Last Node., So that temp can keep track of Last node
else { temp = start; while(temp->next!=NULL)
{ temp = temp->next; }
4. Make Link between Newly Created node and Last node ( temp )
temp->next = new_node;
int pos,i; struct node *new_node,*current,*temp,*temp1; new_node=(struct node *)malloc(sizeof(struct node)); printf("nEnter the data : "); scanf("%d",&new_node->data); new_node->next=NULL; st : printf("nEnter the position : "); scanf("%d",&pos); if(pos>=(length()+1)) { printf("nError : pos > length "); goto st; } if(start==NULL) { start=new_node; current=new_node; } else { temp = start; for(i=1;i< pos-1;i++) { temp = temp->next; } temp1=temp->next; temp->next = new_node; new_node->next=temp1; }
Step 2 :
temp1=temp->next;
Step 3 :
temp->next = new_node;
Step 4 :
new_node->next = temp1
Step 3 : Delete temp i.e Previous Starting Node as we have Updated Version of Start Pointer
free(temp);