data structures using start take two pointers preptr and ptr which will initially point to start start preptr ptr move ptr so that it points to the last node of the list preptr will always point to the node preceding ptr preptr ptr start make the preptr' next part store start node' address and free the space allocated for ptr now preptr is the last node of the list start preptr figure deleting the last node from circular linked list step if start null write underflow go to step [end of ifstep set ptr start step repeat steps and while ptr -next !start step set preptr ptr step set ptr ptr -next [end of loopstep set preptr -next start step free ptr step exit figure algorithm to delete the last node figure shows the algorithm to delete the last node from circular linked list in step we take pointer variable ptr and initialize it with start that isptr now points to the first node of the linked list in the while loopwe take another pointer variable preptr such that preptr always points to one node before ptr once we reach the last node and the second last nodewe set the next pointer of the second last node to startso that it now becomes the (newlast node of the linked list the memory of the previous last node is freed and returned to the free pool programming example write program to create circular linked list perform insertion and deletion at the beginning and end of the list #include #include #include struct node int datastruct node *next}struct node *start nullstruct node *create_cll(struct node *)struct node *display(struct node *)struct node *insert_beg(struct node *)struct node *insert_end(struct node *)