Question: This code gives you a sample single linked list implementation. Checkpoint 1 Go over the code and make sure you understand the implementation. Question: what

This code gives you a sample single linked list implementation.

Checkpoint 1

Go over the code and make sure you understand the implementation. Question: what is the characteristic of the insert function?

Checkpoint 2

Change your code (without adding any new functions) to append nodes into the linked list in the order they were inserted.

You should be able to do this by calling the append() function instead of the insert() function for Case 1.

See if this code works. If it doesnt, use gdb to find the error. Signal the grader to show the error using gdb.

Checkpoint 3

Fix your code to append nodes in the order they were inserted; you need to work with the functions provided in the code and not change them.

Checkpoint 4

Write new functions for the following:

(i) Alwaysinsertnodesatthebeginningofthelinkedlist. (ii) Considering nodes were inserted following (i), Delete function should delete the last

occurrence of the number.

Checkpoint 5

Write a new function to insert nodes in a sorted fashion so that the same number is not duplicated.

Code:

#include

#include

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 add( 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 addafter(int num, int loc)

{

int i;

struct node *temp,*left,*right;

right=head;

for(i=1;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

c++;

temp=temp->next;

}

if(c==0)

add(num);

else if(c

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 count()

{

struct node *n;

int c=0;

n=head;

while(n!=NULL)

{

n=n->next;

c++;

}

return c;

}

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;

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!