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;
}