//String Linked List functions void airportMenu() { int choice = 1, distance = 0; string search; StringLinkedList list; list.createList(); cout << "LGA is the first airport in this list." << endl; while (choice != 0) { switch (choice) { case 1: list.addNodeEnd(makeNewInfo()); cout << "Would you like to add another airport? (1 = yes, 2 = no)" << endl; cin >> choice; cout << endl; break; case 2: cout << "Select an airport code to search, its distance from LGA will be calculated:"; cin >> search; distance = list.searchNodes(search); if (distance == 0) { cout << "Please search for a valid code." << endl; } else { cout << "Distance is " << distance << " miles." << endl; cout << "Would you like to make another search? (1 = yes, 2 = no)" << endl; cin >> choice; choice ++; if (choice == 3) choice = 0; } break; } } }
// Test case 3: insertAtMiddle TEST(TestInsert, insertAtMiddle) { StringLinkedList l; l.insert(0, "A"); l.insert(1, "B"); EXPECT_EQ("A->B", l.toString()); l.insert(1, "C"); EXPECT_EQ("A->C->B", l.toString()); l.insert(1, "D"); EXPECT_EQ("A->D->C->B", l.toString()); l.insert(2, "E"); EXPECT_EQ("A->D->E->C->B", l.toString()); }
// Test case 2: insertAtBack TEST(TestInsert, insertAtBack) { StringLinkedList l; l.insert(0, "A"); EXPECT_EQ("A", l.toString()); l.insert(1, "B"); EXPECT_EQ("A->B", l.toString()); l.insert(2, "C"); EXPECT_EQ("A->B->C", l.toString()); }
// Test case 1: insertAtFront TEST(TestInsert, insertAtFront) { StringLinkedList l; l.insert(0, "A"); EXPECT_EQ("A", l.toString()); l.insert(0, "B"); EXPECT_EQ("B->A", l.toString()); l.insert(0, "C"); EXPECT_EQ("C->B->A", l.toString()); }
// Test case 4: outOfBoundException TEST(TestInsert, outOfBoundException) { StringLinkedList l; EXPECT_THROW(l.insert(1, "A"), OutOfBoundException); EXPECT_THROW(l.insert(-1, "A"), OutOfBoundException); l.insert(0, "A"); EXPECT_THROW(l.insert(2, "A"), OutOfBoundException); EXPECT_THROW(l.insert(-2147483647, "A"), OutOfBoundException); }
TEST(TestConstructor, defaultConstructor) { StringLinkedList l; EXPECT_EQ("", l.toString()); }
StringLinkedList getFilesRecursive(AllocatorPool* pool, String directory, Error* error) { if (directory.length == 0) { StringLinkedList nullResult = {}; return nullResult; } char* lastCharacter = &directory.data[directory.length - 1]; if (lastCharacter[0] == '/' || lastCharacter[0] == '\\') { // Trim trailing back-or-forward slash directory.length -= 1; } assert(directory.length < MAX_PATH); // Convert String to C-String char baseDir[MAX_PATH]; memcpy(baseDir, directory.data, directory.length); baseDir[directory.length] = '\0'; // Convert C-String to WChar-String wchar_t szBaseDir[MAX_PATH]; mbstowcs(szBaseDir, baseDir, MAX_PATH); const u32 directoryLimit = 100; wchar_t szDirectories[directoryLimit][MAX_PATH+10]; u32 directories = 0; u32 files = 0; StringCchCopy(szDirectories[directories++], MAX_PATH, szBaseDir); StringLinkedList list = {}; while (directories > 0) { --directories; wchar_t currentDirectory[MAX_PATH]; StringCchCopy(currentDirectory, MAX_PATH, szDirectories[directories]); wchar_t currentDirectoryWSearch[MAX_PATH]; StringCchCopy(currentDirectoryWSearch, MAX_PATH, currentDirectory); StringCchCat(currentDirectoryWSearch, MAX_PATH, TEXT("\\*")); WIN32_FIND_DATA ffd; HANDLE hFind = FindFirstFile(currentDirectoryWSearch, &ffd); DWORD dLastError = GetLastError(); if (hFind == INVALID_HANDLE_VALUE || dLastError == ERROR_FILE_NOT_FOUND) { if (error) { if (dLastError == ERROR_FILE_NOT_FOUND) { error->errorCode = DIRECTORY_NO_FILES; } else { error->errorCode = DIRECTORY_INVALID_DIR; } } StringLinkedList list_null = {}; return list_null; } do { if (wcscmp(ffd.cFileName, TEXT(".")) != 0 && wcscmp(ffd.cFileName, TEXT("..")) != 0) { if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // Push this directory to be searched next iteration. StringCchCopy(szDirectories[directories], MAX_PATH, currentDirectory); StringCchCat(szDirectories[directories], MAX_PATH, TEXT("\\")); StringCchCat(szDirectories[directories], MAX_PATH, ffd.cFileName); ++directories; } else { wchar_t filepath[MAX_PATH]; StringCchCopy(filepath, ArrayCount(filepath), currentDirectory); StringCchCat(filepath, ArrayCount(filepath), TEXT("\\")); StringCchCat(filepath, ArrayCount(filepath), ffd.cFileName); String string = WcharToUTF8String(pool, filepath); list.add(string, pool); ++files; } } } while (FindNextFile(hFind, &ffd) != 0); FindClose(hFind); } return list; }
int main() { StringLinkedList<int> A; A.addFront(10); A.addFront(15); A.addAfter(12,10); A.addFront(13); cout<<"Front : "<<A.front()<<endl; A.printList(); cout<<"After sorting : "; A.sortList(); A.printList(); cout<<"After reversing : "; A.reverseList(); A.printList(); A.removeFront(); A.removeFront(); A.printList(); return 0; }
void LinkedStack::push(const int& element) { S.addFront(element); n++; }
void LinkedStack::pop() { S.cutFront(); n--; }
const int& LinkedStack::top2() { return S.front2(); }
//Linked Stack functions const string& LinkedStack::top() { return S.front(); }