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");
}
}
}