adding lab 7
This commit is contained in:
26
labs/07_list_implementation/README.md
Normal file
26
labs/07_list_implementation/README.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Lab 7 — List Implementation
|
||||
|
||||
## Checkpoint 1
|
||||
*estimate: 20-30 minutes*
|
||||
|
||||
The implementation of the dslist class is incomplete. In particular, the class is missing the destroy_list
|
||||
private member function that is used by the destructor and the clear member function. The provided test
|
||||
case in [checkpoint1.cpp](checkpoint1.cpp) works “fine”, so what’s the problem?
|
||||
|
||||
Before we fix the problem, let’s use Dr. Memory and/or Valgrind to look at the details more carefully.
|
||||
You should use the memory debugging tools both on your local machine and by submitting the files to
|
||||
the homework server. Study the memory debugger output carefully. The output should match your
|
||||
understanding of the problems caused by the missing destroy_list implementation. Ask a TA if you
|
||||
have any questions.
|
||||
|
||||
Now write and debug the destroy_list function and then re-run the memory debugger (both locally and on
|
||||
the submission server) to show that the memory problems have been fixed. Also finish the implementation
|
||||
of the push_front, pop_front, and pop_back functions.
|
||||
|
||||
**To complete this checkpoint**, show a TA the implementation and memory debugger output before and
|
||||
after writing destroy_list.
|
||||
|
||||
## Checkpoint 3:
|
||||
*estimate: TBD*
|
||||
|
||||
Merge Sort an Array.
|
||||
73
labs/07_list_implementation/checkpoint1.cpp
Normal file
73
labs/07_list_implementation/checkpoint1.cpp
Normal file
@@ -0,0 +1,73 @@
|
||||
#include <iostream>
|
||||
#include <cmath>
|
||||
#include <list>
|
||||
|
||||
#include "dslist.h"
|
||||
|
||||
int main() {
|
||||
|
||||
// =======================================
|
||||
// CHECKPOINT 2
|
||||
|
||||
// create a list of the sqrt of the first 10 integers
|
||||
dslist<double> a;
|
||||
for (int i = 0; i < 10; ++i)
|
||||
a.push_back(sqrt(i));
|
||||
|
||||
|
||||
// print out details of the list
|
||||
assert (a.size() == 10);
|
||||
assert (a.front() == 0);
|
||||
assert (a.back() == 3);
|
||||
dslist<double>::iterator itr;
|
||||
std::cout << "Elements = ";
|
||||
for (itr = a.begin(); itr != a.end(); ++itr)
|
||||
std::cout << " " << *itr;
|
||||
std::cout << std::endl;
|
||||
|
||||
// clear out the list
|
||||
a.clear();
|
||||
|
||||
/*
|
||||
assert (a.size() == 0);
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
// simple tests of push_front, pop_front, and pop_back
|
||||
a.push_front(5);
|
||||
a.push_back(7);
|
||||
a.push_front(3);
|
||||
a.push_back(9);
|
||||
assert (a.size() == 4);
|
||||
|
||||
assert (*(a.begin()) == 3);
|
||||
assert (*(++a.begin()) == 5);
|
||||
assert (*(++(++a.begin())) == 7);
|
||||
assert (*(++(++(++a.begin()))) == 9);
|
||||
|
||||
std::cout << "Elements = ";
|
||||
for (itr = a.begin(); itr != a.end(); ++itr)
|
||||
std::cout << " " << *itr;
|
||||
std::cout << std::endl;
|
||||
|
||||
a.pop_back();
|
||||
a.pop_front();
|
||||
assert (a.size() == 2);
|
||||
assert (*(a.begin()) == 5);
|
||||
assert (*(++a.begin()) == 7);
|
||||
|
||||
std::cout << "Elements = ";
|
||||
for (itr = a.begin(); itr != a.end(); ++itr)
|
||||
std::cout << " " << *itr;
|
||||
std::cout << std::endl;
|
||||
|
||||
a.pop_back();
|
||||
a.pop_front();
|
||||
assert (a.size() == 0);
|
||||
assert (a.begin() == a.end());
|
||||
*/
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user