Add initial code
This commit is contained in:
parent
a3d8b75d71
commit
1f87bd00ad
3 changed files with 160 additions and 0 deletions
61
labs/cosc-2436/4.14/C++/Node.h
Normal file
61
labs/cosc-2436/4.14/C++/Node.h
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
#ifndef NODE_H
|
||||||
|
#define NODE_H
|
||||||
|
|
||||||
|
class Node {
|
||||||
|
protected:
|
||||||
|
double data;
|
||||||
|
Node* next;
|
||||||
|
Node* previous;
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Constructs this node with the specified numerical data value. The next
|
||||||
|
// and previous pointers are each assigned nullptr.
|
||||||
|
Node(double initialData) {
|
||||||
|
data = initialData;
|
||||||
|
next = nullptr;
|
||||||
|
previous = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constructs this node with the specified numerical data value, next
|
||||||
|
// pointer, and previous pointer.
|
||||||
|
Node(double initialData, Node* nextNode, Node* previousNode) {
|
||||||
|
data = initialData;
|
||||||
|
next = nextNode;
|
||||||
|
previous = previousNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~Node() {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns this node's data.
|
||||||
|
virtual double GetData() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sets this node's data.
|
||||||
|
virtual void SetData(double newData) {
|
||||||
|
data = newData;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gets this node's next pointer.
|
||||||
|
virtual Node* GetNext() {
|
||||||
|
return next;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sets this node's next pointer.
|
||||||
|
virtual void SetNext(Node* newNext) {
|
||||||
|
next = newNext;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gets this node's previous pointer.
|
||||||
|
virtual Node* GetPrevious() {
|
||||||
|
return previous;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sets this node's previous pointer.
|
||||||
|
virtual void SetPrevious(Node* newPrevious) {
|
||||||
|
previous = newPrevious;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
32
labs/cosc-2436/4.14/C++/SortedNumberList.h
Normal file
32
labs/cosc-2436/4.14/C++/SortedNumberList.h
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
#ifndef SORTEDNUMBERLIST_H
|
||||||
|
#define SORTEDNUMBERLIST_H
|
||||||
|
#include "Node.h"
|
||||||
|
|
||||||
|
class SortedNumberList {
|
||||||
|
private:
|
||||||
|
// Optional: Add any desired private functions here
|
||||||
|
|
||||||
|
public:
|
||||||
|
Node* head;
|
||||||
|
Node* tail;
|
||||||
|
|
||||||
|
SortedNumberList() {
|
||||||
|
head = nullptr;
|
||||||
|
tail = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inserts the number into the list in the correct position such that the
|
||||||
|
// list remains sorted in ascending order.
|
||||||
|
void Insert(double number) {
|
||||||
|
// Your code here
|
||||||
|
}
|
||||||
|
|
||||||
|
// Removes the node with the specified number value from the list. Returns
|
||||||
|
// true if the node is found and removed, false otherwise.
|
||||||
|
bool Remove(double number) {
|
||||||
|
// Your code here (remove placeholder line below)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
67
labs/cosc-2436/4.14/C++/main.cpp
Normal file
67
labs/cosc-2436/4.14/C++/main.cpp
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include "Node.h"
|
||||||
|
#include "SortedNumberList.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
void PrintList(SortedNumberList& list);
|
||||||
|
vector<string> SpaceSplit(string source);
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
// Read the line of input numbers
|
||||||
|
string inputLine;
|
||||||
|
getline(cin, inputLine);
|
||||||
|
|
||||||
|
// Split on space character
|
||||||
|
vector<string> terms = SpaceSplit(inputLine);
|
||||||
|
|
||||||
|
// Insert each value and show the sorted list's contents after each insertion
|
||||||
|
SortedNumberList list;
|
||||||
|
for (auto term : terms) {
|
||||||
|
double number = stod(term);
|
||||||
|
cout << "List after inserting " << number << ": " << endl;
|
||||||
|
list.Insert(number);
|
||||||
|
PrintList(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Read the input line with numbers to remove
|
||||||
|
getline(cin, inputLine);
|
||||||
|
terms = SpaceSplit(inputLine);
|
||||||
|
|
||||||
|
// Remove each value
|
||||||
|
for (auto term : terms) {
|
||||||
|
double number = stod(term);
|
||||||
|
cout << "List after removing " << number << ": " << endl;
|
||||||
|
list.Remove(number);
|
||||||
|
PrintList(list);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prints the SortedNumberList's contents, in order from head to tail
|
||||||
|
void PrintList(SortedNumberList& list) {
|
||||||
|
Node* node = list.head;
|
||||||
|
while (node) {
|
||||||
|
cout << node->GetData() << " ";
|
||||||
|
node = node->GetNext();
|
||||||
|
}
|
||||||
|
cout << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Splits a string at each space character, adding each substring to the vector
|
||||||
|
vector<string> SpaceSplit(string source) {
|
||||||
|
vector<string> result;
|
||||||
|
size_t start = 0;
|
||||||
|
for (size_t i = 0; i < source.length(); i++) {
|
||||||
|
if (' ' == source[i]) {
|
||||||
|
result.push_back(source.substr(start, i - start));
|
||||||
|
start = i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result.push_back(source.substr(start));
|
||||||
|
return result;
|
||||||
|
}
|
Loading…
Reference in a new issue