Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C++ Implement the following four functions to work with the Link class: f and l

ID: 3692283 • Letter: C

Question

C++

Implement the following four functions to work with the Link class:

f and l are pointers to first and last links in the list

void addFirst(int n, Link *&f, Link *&l); // adds a link containing int n at the beginning of the list

void addLast(int n, Link *&f, Link *&l); // adds a link containing int n at the end of the list

int removeFirst(Link *&f, Link *&l); // remove the first link and return the int it contained

int peek(Link *f); // return the int it contained in the first link but don't remove it

Write a main function that prints a menu of choices to allow the user to do the following:

1. Add a new int at the beginning

2. Add a new int at the end

3. Remove and print the first int

4. Print the first int without removing it

5. Print the List (use overloaded << operator)

Explanation / Answer

#include<stdio.h>

#include<stdlib.h>

struct node

{

    int data;

    struct node *next;

}*head;

void append(int num)

{

    struct node *temp,*right;

    temp= (struct node *)malloc(sizeof(struct node));

    temp->data=num;

    right=(struct node *)head;

    while(right->next != NULL)

    right=right->next;

    right->next =temp;

    right=temp;

    right->next=NULL;

}

void addFirst( int num )

{

    struct node *temp;

    temp=(struct node *)malloc(sizeof(struct node));

    temp->data=num;

    if (head== NULL)

    {

    head=temp;

    head->next=NULL;

    }

    else

    {

    temp->next=head;

    head=temp;

    }

}

void addLast(int num, int loc)

{

    int i;

    struct node *temp,*left,*right;

    right=head;

    for(i=1;i<loc;i++)

    {

    left=right;

    right=right->next;

    }

    temp=(struct node *)malloc(sizeof(struct node));

    temp->data=num;

    left->next=temp;

    left=temp;

    left->next=right;

    return;

}

void insert(int num)

{

    int c=0;

    struct node *temp;

    temp=head;

    if(temp==NULL)

    {

    add(num);

    }

    else

    {

    while(temp!=NULL)

    {

        if(temp->data<num)

        c++;

        temp=temp->next;

    }

    if(c==0)

        add(num);

    else if(c<count())

        addafter(num,++c);

    else

        append(num);

    }

}

int delete(int num)

{

    struct node *temp, *prev;

    temp=head;

    while(temp!=NULL)

    {

    if(temp->data==num)

    {

        if(temp==head)

        {

        head=temp->next;

        free(temp);

        return 1;

        }

        else

        {

        prev->next=temp->next;

        free(temp);

        return 1;

        }

    }

    else

    {

        prev=temp;

        temp= temp->next;

    }

    }

    return 0;

}

void display(struct node *r)

{

    r=head;

    if(r==NULL)

    {

    return;

    }

    while(r!=NULL)

    {

    printf("%d ",r->data);

    r=r->next;

    }

    printf(" ");

}

int main()

{

    int i,num;

    struct node *n;

    head=NULL;

    while(1)

    {

    printf(" List Operations ");

    printf("=============== ");

    printf("1.Insert ");

    printf("2.Display ");

    printf("3.Size ");

    printf("4.Delete ");

    printf("5.Exit ");

    printf("Enter your choice : ");

    if(scanf("%d",&i)<=0)

{

        printf("Enter only an Integer ");

        exit(0);

    } else {

        switch(i)

        {

        case 1:      printf("Enter the number to insert : ");

                 scanf("%d",&num);

                 insert(num);

                 break;

        case 2:     if(head==NULL)

                {

                printf("List is Empty ");

                }

                else

                {

                printf("Element(s) in the list are : ");

                }

                display(n);

                break;

        case 3:     printf("Size of the list is %d ",count());

                break;

        case 4:     if(head==NULL)

                printf("List is Empty ");

                else{

                printf("Enter the number to delete : ");

                scanf("%d",&num);

                if(delete(num))

                    printf("%d deleted successfully ",num);

                else

                    printf("%d not found in the list ",num);

                }

                break;

        case 5:     return 0;

        default:    printf("Invalid option ");

        }

    }

    }

    return 0;

}