C Program to Implement singly linked circular list of integers with append and display operations | DS - IProgramX

Q. There are lists where new elements are always appended at the end of the list. The list can be implemented as a circular list with the external pointer pointing to the last element of the list. Implement singly linked circular list of integers with append and display operations. The operation append(L, n), appends to the end of the list, n integers either accepted from user or randomly generated.



Program

#include<stdio.h>
#include<stdlib.h>
#define newnode (struct snode*)malloc(sizeof(struct snode))
struct snode
{
                int data;
                struct snode *next;
};
struct snode *create(int no)
{
                struct snode *f,*s;
                int i;
                f=newnode;
                printf("enter data");
                scanf("%d",&f->data);
                f->next=NULL;
                s=f;
                for(i=2;i<=no;i++)
                {
                s->next=newnode;
                s=s->next;
                scanf("%d",&s->data);
                s->next=NULL;
                }
                s->next=f;
                return f;
}          
void display(struct snode *f)
{
                struct snode *s;
                s=f;
                do
                {printf("\t%d",s->data);
                s=s->next;
                }while(s!=f);
}

struct node * append(struct snode *f,int n)
{              struct snode *t,*s;
                s=newnode;
                s->data=n;
                t=f;
                int i,count=0;
                do
                {              count++;
                                t=t->next;
                } while(t->next!=f);
                t->next=s;
                t=t->next;
                t->next=f;
                return f;
}

main()
{              int no,num;
                struct snode *l1,*l2;
                printf("enter no of nodes for 1st link");
                scanf("%d",&no);
                l1=create(no);
                display(l1);
                printf("\nenter data to be append : ");
                scanf("%d",&num);
                l1=append(l1,num);
                display(l1);
}

Output:

enter no of nodes for 1st link2
enter data
3
2
        3       2
enter data to be append : 3
        3       2       3

Post a Comment

0 Comments