> single linked list program in c ~ Online tutorial

single linked list program in c


Single linked list inplementation using different functions

1. Insert a number at the beginning
2. Insert a number at last
3. Insert a number at a particular location in list
4. Print the elements in the list
5. Print the total number of elements in the list
6. Delete a node in the linked list
7. Reverse a linked list
8. Get out of linked list



Sample Code

    /* PROGRAM IMPLEMENTATION OF SINGLE LINKED LIST */
    
    #include"stdio.h"
    //#define NULL 0
    /* STRUCTURE CONTANING A DATA PART AND A LINK PART */
    
    struct node
    {
    int data;
    struct node *next;
    }*p;
    
    /* P IS A GLOBAL POINTER CONTAINS THE ADRESS OF THE FIRST NODE IN
    LIST
    */
    
    /*THIS FUNCTION DELETES A NODE */
    
    delnode(int num)
    {
    struct node *temp, *m;
    temp=p;
    while(temp!=NULL)
    {
    if(temp->data==num)
    {
    if(temp==p)
    {
    p=temp->next;
    free(temp);
    return;
    }
    else
    {
    m->next=temp->next;
    free(temp);
    return;
    }
    }else
    {
    m=temp;
    temp= temp->next;
    }
    
    }
    printf("    ELEMENT %d NOT FOUND    ", num);
    }/*THIS FUNCTION ADDS A NODE AT THE LAST OF LINKED LIST */
    
    append( int num )
    {
    struct node *temp,*r;
    /* CREATING A NODE AND ASSIGNING A VALUE TO IT */
    
    temp= (struct node *)malloc(sizeof(struct node));
    temp->data=num;
    r=(struct node *)p;
    
    if (p == NULL) /* IF LIST IS EMPTY CREATE FIRST NODE */
    {
    p=temp;
    p->next =NULL;
    }
    else
    { /* GO TO LAST AND ADD*/
    
    while( r->next != NULL)
    r=r->next;
    r->next =temp;
    r=temp;
    r->next=NULL;
    }
    }/* ADD A NEW NODE AT BEGINNING */
    
    addbeg( int num )
    {
    /* CREATING A NODE AND INSERTING VALUE TO IT */
    
    struct node *temp;
    temp=(struct node *)malloc(sizeof(struct node));
    temp->data=num;
    
    /* IF LIST IS NULL ADD AT BEGINNING */
    if ( p== NULL)
    {
    p=temp;
    p->next=NULL;
    }
    
    else
    {
    temp->next=p;
    p=temp;
    }
    }
    
    /* ADD A NEW NODE AFTER A SPECIFIED NO OF NODES */
    
    addafter(int num, int loc)
    {
    int i;
    struct node *temp,*t,*r;
    r=p;         /* here r stores the first location */
    if(loc > count()+1 || loc <= 0)
    {
    printf("    insertion is not possible :    ");
    return;
    }
    if (loc == 1)
/* if list is null then add at beginning */
    {
    addbeg(num);
    return;
    }
    else
    {
    for(i=1;i<loc;i++)
    {
    t=r;
/* t will be holding previous value */
    r=r->next;
    }
    temp=(struct node *)malloc(sizeof(struct node));
    temp->data=num;
    t->next=temp;
    t=temp;
    t->next=r;
    return;
    }
    }/* THIS FUNCTION DISPLAYS THE CONTENTS OF THE LINKED LIST */
    
    display(struct node *r)
    {
    r=p;
    if(r==NULL)
    {
    printf("NO ELEMENT IN THE LIST :");
    return;
    }
    /* traverse the entire linked list */
    while(r!=NULL)
    {
    printf(" -> %d ",r->data);
    r=r->next;
    }
    printf("");
    }
    //THIS FUNCTION COUNTS THE NUMBER OF ELEMENTS IN THE LIST
    count()
    {
    struct node *n;
    int c=0;
    n=p;
    while(n!=NULL)
    {
    n=n->next;
    c++;
    }
    return(c);
    }
    //THIS FUNCTION REVERSES A LINKED LIST
    reverse(struct node *q)
    {
    struct node *m, *n,*l,*s;
    m=q;
    n=NULL;
    while(m!=NULL)
    {
    s=n;
    n=m;
    m=m->next;
    n->next=s;
    }
    p=n;
    }
    
    
    /* THIS IS THE MAIN PROGRAM */
    
    main()
    {
    int i;
    p=NULL;
    while(1) /* this is an indefinite loop */
    {
    printf("    1.INSERT A NUMBER AT BEGINNING;<BR>);
    printf("    2.INSERT A NUMBER AT LAST:<BR>);
    printf("    3.INSERT A NUMBER AT A PARTICULAR LOCATION INlIST:<BR>);
    printf("    4.PRINT THE ELEMENTS IN THE LIST :<BR>);
    printf("    5.PRINT THE NUMBER OF ELEMENTS IN THE LIST <BR>);
    printf("    6.DELETE A NODE IN THE LINKED LIST:<BR>);
    printf("    7.REVERSE A LINKED LIST :<BR>);
    printf("    8.GET OUT OF LINKED LIST (BYEE BYEE):<BR>);
    printf("    PLEASE, ENTER THE NUMBER:");
    
    scanf("%d",&i);
/* ENTER A VALUE FOR SWITCH */
    
    switch(i)
    {
    case 1:
    {
    int num;
    printf("
    PLEASE ENTER THE NUMBER :-");
    scanf("%d",&num);
    addbeg(num);
    break;
    }
    case 2:
    {
    int num;
    printf("
    PLEASE ENTER THE NUMBER :-");
    scanf("%d",&num);
    append(num);
    break;
    }
    
    case 3:
    {
    int num, loc,k;
    printf("
    PLEASE ENTER THE NUMBER :-");
    scanf("%d",&num);
    printf("
    PLEASE ENTER THE LOCATION NUMBER :-");
    scanf("%d",&loc);
    addafter(num,loc);
    break;
    }
case 4:
    {
    struct node *n;
    printf("
    
    THE ELEMENTS IN THE LIST ARE : <BR>);
    display(n);
    break;
    }
    
    case 5:
    {
    struct node *n;
    display(n);
    printf(" TOTAL NO OF ELEMENTS IN THE LSIT ARE %d",count());
    break;
    }
case 6:
    {
    int num;
    printf("
    PLEASE ENTER A NUMBER FROM THE LIST :");
    scanf("%d",&num);
    delnode(num);
    break;
    }
    case 7:
    {
    reverse(p);
    display(p);
    break;
    }
    case 8:
    {
    exit();
    }
    }/* end if switch */
    }/* end of while */
    }/* end of main */

Please Give Us Your 1 Minute In Sharing This Post!
Please Give Us Your 1 Minute In Sharing This Post!
SOCIALIZE IT →
FOLLOW US →
SHARE IT →
Powered By: BloggerYard.Com

1 comments:

Anonymous said...

thanks dude..