# Introduction to programming in C Week 8

Course Name: Introduction to programming in C

Question 1

#### In this question, you have to write code to remove the first node in a doubly linked list containing a specified number. The code to create the linked list is already given.The main() function calls a function removeData(head,tail,n) to remove the first node containing data n from the linked list.Complete the code by writing the missing function. You can also write additional functions which you may need.

These are Introduction to programming in C Assignment 8 Answers

Input Format
You will be given a positive number N in the first line.
This will be followed by a line containing N integers.
This will be followed by an integer M.
Output format
The output will be the list after deleting M.
Note : Only delete the first occurrence of M in list. If M is not present in the list, no change should happen to the list. Maintain the remaining elements in the original order.
Note : You do not have to add any additional code to print the list – once you code the removeData() function, the code will print the contents of the remaining list.

These are Introduction to programming in C Assignment 8 Answers

Solution

``````#include <stdio.h>
#include <stdlib.h>

int data;
};

}

void appendNode(struct DoublyLinkedList **tail, int data) {
newNode->data = data;
newNode->prev = *tail;
newNode->next = NULL;
(*tail)->next = newNode;
*tail = newNode;
}

printf(",");
}
}
}

// Find the node to be removed
while (current != NULL && current->data != n) {
current = current->next;
}

if (current == NULL) {
return;
}

// If the node is the head
}
}
// If the node is the tail
else if (current == *tailptr) {
*tailptr = current->prev;
(*tailptr)->next = NULL;
}
// If the node is in the middle
else {
current->prev->next = current->next;
current->next->prev = current->prev;
}

free(current);
}

int main() {
int n;
int i = 0;
int m;
scanf("%d", &n);
if (n <= 0) {
return 0;
}
scanf("%d", &m);
for (i = 1; i < n; i++) {
/* read the remaining elements */
scanf("%d", &m);
appendNode(&tail, m);
}

scanf("%d", &n);
return 0;
}``````

These are Introduction to programming in C Assignment 8 Answers

Question 2

You are given a non-negative number less than 10000000 (1 followed by 7 zeroes). You have to divide the number into the following components, and print them in the following order.
1. The part of the number which is less than a thousand.
2. The part of the number which is between a thousand and a lakh (10^5)
3. The part of the number which is between a lakh and a crore (10^7)
You should terminate printing when no higher power of 10 is present to be printed.
Sample input
134847
Sample Output
847
34
1

These are Introduction to programming in C Assignment 8 Answers

Solution

``````#include <stdio.h>

int main() {
int num;
scanf("%d", &num);
int crore = num / 10000000;
num %= 10000000;
int lakh = num / 100000;
num %= 100000;
int thousand = num / 1000;
num %= 1000;
int lessThanThousand = num;

if (crore > 0) {
printf("%d\n", lessThanThousand);
printf("%d\n", thousand);
printf("%d\n", lakh);
printf("%d", crore);
} else if (lakh > 0) {
printf("%d\n", lessThanThousand);
printf("%d\n", thousand);
printf("%d", lakh);
} else if (thousand > 0) {
printf("%d\n", lessThanThousand);
printf("%d", thousand);
} else {
printf("%d", lessThanThousand);
}

return 0;
}``````

These are Introduction to programming in C Assignment 8 Answers