Best Video Explained:
code:
some bugs here but understood the implementation:
#include<bits/stdc++.h> void display(void); void addatbegin(void); void addafter(void); struct node { int data; struct node *link; }; struct node *root=NULL; int len; void append() { struct node *temp; temp=(struct node*)malloc(sizeof(struct node)); printf("Enter node data: "); scanf("%d", &temp->data); temp->link=NULL; if(root==NULL) //list is empty { root=temp; } else { struct node* p; p=root; while(p->link!=NULL) { p=p->link; } p->link=temp; } } int length() { int cnt=0; struct node *temp; temp=root; while(temp!=NULL) { cnt++; temp=temp->link; } return cnt; } void display() { struct node* temp; temp==root; if(temp==NULL) { printf("List is empty\n"); } else { while(temp!=NULL) { printf("%d-->",temp->data); temp=temp->link; } printf("\n"); } } //void delete(); int main() { int ch; while(1) { printf("Single linked list op:"); printf("1. Append\n"); printf("2. Add at begin\n"); printf("3. Add at after\n"); printf("4. Lenght\n"); printf("5. Display\n"); printf("6. Delete\n"); printf("7. Quit\n"); printf("enter your chocie: "); scanf("%d",ch); switch(ch) { case 1: append(); break; case 2: addatbegin(); break; case 3: addafter(); break; case 4: len=length(); printf("Length=%d",len); break; case 5: display(); break; case 7: exit(1); default: printf("invalid\n"); } } }