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

In C language. Must use following code as template please. _____________________

ID: 3713228 • Letter: I

Question

In C language.

Must use following code as template please.

__________________________________________________________________________

#include
#include

typedef struct node_def node;
struct node_def
{
    int val;
    node *next;
};

node *makeNode(int val);
node *insertFront(node *head, node *new);
node *deleteNode(node *head, int val);
node *modifyNode(node *head, int old, int new);
int inList(node *head, int val);
int length(node *head);
void lookForDupes(node *head);
void printList(node *head);

int main()
{

   return 0;
}

node *makeNode(int val)
{
   node *tmp = malloc(sizeof(node));
   tmp->val = val;
   tmp->next = NULL;

   return tmp;
}

node *insertFront(node *head, node *new)
{
   if (head == NULL)
       head = new;
   else
   {
       new->next = head;
       head = new;
   }

   return head;
}


node *deleteNode(node *L, int val)
{

}

node *modifyNode(node *L, int old, int new)
{

}

int inList(node *L, int val)
{
    //returns 1 if found, 0 if not found

}

int length(node *L)
{

}

void lookForDupes(node *L)
{

}

void printList(node *head)
{
   node *tmp = head;
   int i = 0;

   for (i = 1; tmp != NULL; ++i)
   {
       printf("%4d ", tmp->val);
       if (i % 10 == 0)
           printf(" ");
       tmp = tmp->next;
   }
   if ((i-1) % 10)
       printf(" ");

   return;
}


____________________________________________________________________
Tasks a,b,c were from the previous assignement.

For this assignment you will perform several tasks

Explanation / Answer

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

typedef struct node_def node;

struct node_def

{

int val;

node *next;

};

node *makeNode(int val);

node *insertFront(node *head, node *new);

node *deleteNode(node *head, int val);

node *modifyNode(node *head, int old, int new);

int inList(node *head, int val);

int length(node *head);

void lookForDupes(node *head);

void printList(node *head);

int main()

{

node* root = NULL;

node* newNode = NULL;

int n, randVal, search, change, remove;

srand(time(NULL));

printf("Enter number of nodes you want to create : ");

scanf("%d",&n);

for(int i=0; i<n; i++)

{

randVal = rand() % (9999) + 1;

newNode = makeNode(randVal);

root = insertFront(root, newNode);

}

printList(root);

printf("Enter a number to search for : ");

scanf("%d",&search);

int flag = inList(root, search);

if(flag)

{

printf("Found in list ");

printf("Change to what value? : ");

scanf("%d",&change);

root = modifyNode(root, search, change);

printList(root);

}

else

{

printf("Not in list ");

}

printf("Enter a number to remove : ");

scanf("%d",&remove);

root = deleteNode(root, remove);

printList(root);

lookForDupes(root);

printf(" ");

return 0;

}

node *makeNode(int val)

{

node *tmp = malloc(sizeof(node));

tmp->val = val;

tmp->next = NULL;

return tmp;

}

node *insertFront(node *head, node *new1)

{

if (head == NULL)

head = new1;

else

{

new1->next = head;

head = new1;

}

return head;

}

node *deleteNode(node *L, int val)

{

node *temp = L;

node *t, *prev = NULL;

while (temp != NULL)

{

if(temp->val == val)

{

t = temp->next;

printf("%d was deleted from the list ",temp->val);

free(temp);

if(prev != NULL)

{

prev->next = t;

return L;

}

else

{

L = t;

return L;

}

}

prev = temp;

temp = temp->next;

}

}

node *modifyNode(node *L, int old, int new)

{

node *temp = L;

while (temp != NULL)

{

if(temp->val == old)

{

temp->val = new;

break;

}

temp = temp->next;

}

return L;

}

int inList(node *L, int val)

{

node *temp = L;

while (temp != NULL)

{

if(temp->val == val)

return 1;

temp = temp->next;

}

return 0;

}

int length(node *L)

{

int count = 0;

node *temp = L;

while (temp != NULL)

{

count++;

temp = temp->next;

}

return count;

}

void lookForDupes(node *L)

{

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

temp = NULL;

node *A, *B;

A = L;

int flag = 0;

while(A && A->next)

{

B = A->next;

while(B)

{

if(A->val == B->val)

{

if(temp == NULL)

temp = makeNode(A->val);

temp = insertFront(temp, A);

flag = 1;

}

B = B->next;

}

A = A->next;

}

if(flag == 1)

printList(temp);

else

printf("No Dupes Found :( ");

}

void printList(node *head)

{

node *tmp = head;

int i = 0;

for (i = 1; tmp != NULL; ++i)

{

printf("%4d ", tmp->val);

if (i % 10 == 0)

printf(" ");

tmp = tmp->next;

}

if ((i-1) % 10)

printf(" ");

return;

}