Explanation of Solution
Implementation of “find_fit()” function with First-fit search:
In the “Section 9.9.12 (mm.c)”, add the below “find_fit()” function. The function “find_fit()” is as follows:
// Definition of find_fit() function to find a block fit with size bytes
static void *find_fit(size_t asize)
{
// First-fit search
// Declare the pointer
void *bp;
// For loop to find the fit for first block
for (bp = heap_listp; GET_SIZE(HDRP(bp)) > 0; bp = NEXT_BLKP(bp)) {
// Check the allocation and size
if (!GET_ALLOC(HDRP(bp)) && (asize <= GET_SIZE(HDRP(bp)))) {
// Return the point
return bp;
}
}
// Return null if no fit is available
return NULL;
}
Explanation:
The “find_fit()” function is to find a block fit with size bytes.
- Declare a pointer “bp” to represent which place the block is allocated.
- “for” loop to search the place to fit the first block.
- “if” statement to check the place and size to fit the block.
- Return the pointer.
- Otherwise, return “NULL” if no fit is available.
- “if” statement to check the place and size to fit the block.
The “find_fit()” function is used to implement other simple implicit-list allocator same as first-fit search and to handle and traverse blocks.
Filename: main.c
// Include libraries
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
// Include required header files
#include "csapp.h"
#include "memlib.h"
#include "mm.h"
#include "memlib.c"
#include "mm...
Want to see the full answer?
Check out a sample textbook solutionChapter 9 Solutions
COMPUTER SYSTEMS&MOD MSGT/ET SA AC PKG
- (IntelliJ) Write an easier version of a linked list with only a couple of the normal linked list functions and the ability to generate and utilize a list of ints. The data type of the connection to the following node can be just Node, and the data element can be just an int. You will need a reference (Java) or either a reference or a pointer (C++) to the first node, as well as one to the last node. * Create a method or function that accepts an integer, constructs a node with that integer as its data value, and then includes the node to the end of the list. If the new node is the first one, this function will also need to update the reference to the first node. This function will need to update the reference to the final node. Consider how to insert the new node following the previous last node, and keep in mind that the next reference for the list's last node should be null. * Create a different method or function that iteratively explores the list, printing the int data values as…arrow_forward(Implement a doubly linked list) The MyLinkedList class used in Listing 24.6 is a one-way directional linked list that enables one-way traversal of the list. Modify the Node class to add the new data field name previous to refer to the previous node in the list, as follows:public class Node<E> { E element; Node<E> next; Node<E> previous;public Node(E e) { element = e; } }Implement a new class named TwoWayLinkedList that uses a doubly linked list to store elements. The MyLinkedList class in the text extends MyAbstractList. Define TwoWayLinkedList to extend the java.util.AbstractSequentialList class. You need to implement all the methods defined in MyLinkedList as well as the methods listIterator() and listIterator(int index). Both return an instance of java.util. ListIterator<E>. The former sets the cursor to the head of the list and the latter to the element at the specified index.arrow_forwardProgramming Language: C++ Please provide notes for understanding. 7.3: Delete Repeats Write a function called delete_repeats that has a partially filled array ofcharacters as a formal parameter and that deletes all repeated letters fromthe array. Since a partially filled array requires two arguments, the functionwill actually have two formal parameters: an array parameter and a formalparameter of type int that gives the number of array positions used. Whena letter is deleted, the remaining letters are moved forward to fill inthe gap. This will create empty positions at the end of the array so thatless of the array is used. Since the formal parameter is a partially filledarray, a second formal parameter of type int will tell how many arraypositions are filled. This second formal parameter will be a call-by-reference parameter and will be changed to show how much of the array is used after the repeated letters are deleted. For example, consider the following code:char (Links to an…arrow_forward
- c) (6 points) For each of the following scenarios choose the "best" data structure from the following list or a combination of data structures: an unsorted array, linked list, DLL, circular LL, stack, queue. In each case, justify your answer briefly. i. Suppose that a grocery store decided that customers who come first will be served first. ii. A list must be maintained so that any element can be accessed randomly. iii. A program needs to remember operations it performed in opposite order.arrow_forward(In java please) ( NO TOY CLASS PLEASE READ INSTRUCTION OR DOWN VOTE PLEASE LOOK AT TWO IMAGES BELOW FIRST ONE IS CURRENCY CLASS NEED THE SECOND IS INSTRUCTIONS ON HOW TO MAKE TEST CLASS. PLEASE NO TOY CLASS OR DOWN VOTE USE CURRENCY CLASS INSTEAD AND UPDATE IT) THIS A LinkNode structure or class which will have two attributes - a data attribute, and a pointer attribute to the next node. The data attribute of the LinkNode should be a reference/pointer of the Currency class of Lab 2. Do not make it an inner class or member structure to the SinglyLinkedList class of #2 below. A SinglyLinkedList class which will be composed of three attributes - a count attribute, a LinkNode pointer/reference attribute named as and pointing to the start of the list and a LinkNode pointer/reference attribute named as and pointing to the end of the list. Since this is a class, make sure all these attributes are private. The class and attribute names for the node and linked list are the words in bold in #1…arrow_forwardDo not use 2d lists, sets, dicts, arrays or recursion. Code in Python. Write the function destructiveRemoveRepeats(L), whichtakes a list L and destructively returns a new list in which any repeating elements in L are removed. Thus, this function should directly modify the provided list to not have any repeating elements. Since this is a destructive function, it should not return any value at all (so, implicitly, it should return None). For example: L = [1, 3, 5, 3, 3, 2, 1, 7, 5] destructiveRemoveRepeats(L) assert(L == [1, 3, 5, 2, 7])arrow_forward
- 8.16 LAB: Mileage tracker for a runner C++ Given the MileageTrackerNode class, complete main() to insert nodes into a linked list (using the InsertAfter() function). The first user-input value is the number of nodes in the linked list. Use the PrintNodeData() function to print the entire linked list. DO NOT print the dummy head node. Ex. If the input is: 3 2.2 7/2/18 3.2 7/7/18 4.5 7/16/18 the output is: 2.2, 7/2/18 3.2, 7/7/18 4.5, 7/16/18 I need the //TODO completed Main.cpp #include "MileageTrackerNode.h" #include <string> #include <iostream> using namespace std; int main (int argc, char* argv[]) { // References for MileageTrackerNode objects MileageTrackerNode* headNode; MileageTrackerNode* currNode; MileageTrackerNode* lastNode; double miles; string date; int i; // Front of nodes list headNode = new MileageTrackerNode(); lastNode = headNode; // TODO: Read in the number of nodes cin >> i int p = i; currNode…arrow_forward8.16 LAB: Mileage tracker for a runner C++ Given the MileageTrackerNode class, complete main() to insert nodes into a linked list (using the InsertAfter() function). The first user-input value is the number of nodes in the linked list. Use the PrintNodeData() function to print the entire linked list. DO NOT print the dummy head node. Ex. If the input is: 3 2.2 7/2/18 3.2 7/7/18 4.5 7/16/18 the output is: 2.2, 7/2/18 3.2, 7/7/18 4.5, 7/16/18 Main.cpp #include "MileageTrackerNode.h"#include <string>#include <iostream>using namespace std; int main (int argc, char* argv[]) {// References for MileageTrackerNode objectsMileageTrackerNode* headNode;MileageTrackerNode* currNode;MileageTrackerNode* lastNode; double miles;string date;int i; // Front of nodes listheadNode = new MileageTrackerNode();lastNode = headNode; // TODO: Read in the number of nodes // TODO: For the read in number of nodes, read// in data and insert into the linked list // TODO: Call the…arrow_forwardSOB 22 – (Block 2)Write up what the properties of sets, lists, vectors and strings are and whether they are mutable or immutable. Then consider the class of problems that they are best for and use some code to illustrate your points. E.g., if you have a function that solves a problem using lists, then you can say why you can/can’t use vectors for it or sets etc. Hint: Try and think of a problem (or maybe one you have already solved as part of the exercises) and try and solve it using the different data structures, e.g. first with lists, then vector, then sets. Which do you think works best? They might all be suitable? Is there a problem that you can think of where the one is suitable and the other is not (the key thing here is to understand how they differ)?[2:50 PM] E.g. a student was trying to add all the elements of 2 vectors together. He solved the problem with vectors. Can he use lists or sets? Show this by writing code in Racket to make your point.arrow_forward
- a. What is the efficient method for “array resizing” implementation of the stack in “push” and “pop” cases? b. The following is the postfix evaluation code for your reference. Explain the stack status for evaluating the following postfix expression 3 4 5 + *arrow_forwardapartmentList is a pointer to the first node in a linked list of nodes. Use this for Parts a, b, and c. Part a. Create an inner class that will hold the following information: the apartment number of the apartment (an int), the number of bedrooms in the apartment (also an int), the current rent of the apartment (a double). Don't forget to include a field for the link! Just create the class itself and the instance variables; you don't need to put any methods into the class.arrow_forward14.7 Practice using C++ hash templates C++ has two built in hash structures that will suite for most programming needs of hashes. The two types are unorderedmap and orderedmap. In this weeks program you are going to practice creating, inserting and iterating over the two types of maps. Your assignment is to create an unordered map and an ordered map, both with have key value pairs of type . You will read the key value pairs in from a dataFile using the file stream operator storing the first value (an integer into the integer key) and the second one into a string. You will then insert each pair into both the unordered and ordered maps. Lastly you will use an interator to iterate through the map printing them out. Your output should make it clear by label which list is the ordered map and which is the unordered map. The test provided is merely for your assistance - your program will be graded on it's content regardless of the results of book test. You will need the following references…arrow_forward
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education