Beispiel #1
0
int main()
{
   ListArray<CD>* cds = CD::readCDs("cds.txt");
   int num_items = cds->size();
   cout << num_items << endl;

while(true)
{
   HeapSkew<CD>* sh = new HeapSkew<CD>(&CD::compare_items);

   ListArrayIterator<CD>* iter = cds->iterator();
   while(iter->hasNext())
   {
      CD* cd = iter->next();
      sh->heapInsert(cd);
   }
   delete iter;

   /*while(!(sh->heapIsEmpty()))
   {
      CD* cd = sh->heapRemove();
      cd->displayCD();
   }*/

   delete sh;
}
   deleteCDs(cds);
   delete cds;

   return 0;
}
Beispiel #2
0
ListArrayIterator<String>* String::getTokens(char token)
{
    int num_tokens = numTokens(token);
    ListArray<String>* strings = new ListArray<String>();

    int start = 0;
    for (int j = 0; j < num_tokens; j++)
    {
        int index = indexOf(token, start);  //the index of the next token
        char* temp = new char[index - start + 1];

        for (int i = start; i < index; i++)
        {
            temp[i - start] = charAt(i);
        }
        temp[index - start] = 0;  //set null terminator
        start = index + 1;

        String* str = new String(temp);
        strings->add(str);

        delete[] temp;
    }

    ListArrayIterator<String>* token_iter = strings->iterator();
    delete strings;
    return token_iter;
}
Beispiel #3
0
int main()
{
   ListArray<CD>* cds = CD::readCDs("cds.txt");
   int num_items = cds->size();
   cout << num_items << endl;

   TableSortedList<CD>* slt = new TableSortedList<CD>(&CD::compare_items, &CD::compare_keys);

   //DO THIS
   //thoroughly test your table

   ListArrayIterator<CD>* iter = cds->iterator();
   
   
	if(slt->tableIsEmpty())
	{
		int count = 0;
		while(iter->hasNext())
		{
		CD* cd = iter->next();
		slt->tableInsert(cd);
		count++;
		}
	}

	ListDoublyLinkedIterator<CD>* iter2 = slt->iterator();
	
	/*while(iter2->hasNext())
	{
		CD* myCD = iter2->next();
		myCD->getKey()->displayString();
		cout << endl;
		
	}*/

	String* title = new String("Manifesto");
	
	
	bool rem = slt->tableRemove(title);
	if (rem)
		cout << "Removed item" << endl << endl;
	
	while(iter2->hasNext())
	{
		CD* myCD = iter2->next();
		myCD->getKey()->displayString();
		cout << endl;
	}
	
	cout << endl;
	cout << slt->tableSize() << endl;
	
	delete title;
   deleteCDs(cds);
   delete cds;
   delete slt;
   return 0;
}
Beispiel #4
0
int main()
{
   //the unsorted ListArray of cds
   ListArray<CD>* cds = CD::readCDs("cds.txt");
   int num_items = cds->size();
   cout << num_items << endl;
   cout << endl;

   //test the binary search tree
   //insert all of the cds
   ListArrayIterator<CD>* iter = cds->iterator();
   BinarySearchTree<CD>* bst = new BinarySearchTree<CD>(&CD::compare_items, &CD::compare_keys);
   while(iter->hasNext())
   {
      CD* cd = iter->next();
      bst->insert(cd);
   }
   delete iter;

   
   //DO THIS
   //test your tree sort method
   CD** unsorted_cds = cds->toArray();
   CD** sorted_cds = BinarySearchTree<CD>::treeSort(unsorted_cds, num_items, &CD::compare_items, &CD::compare_keys);

   for (int i = 0; i < num_items; i++)
   {
	   sorted_cds[i]->getKey()->displayString();
	   cout << endl;
   }










   deleteCDs(cds);
   delete cds;
   return 0;
}
Beispiel #5
0
int main()
{
   ListArray<CD>* cds = CD::readCDs("cds.txt");
   int num_items = cds->size();
   cout << num_items << endl;

   TableSortedList<CD>* slt = new TableSortedList<CD>(&CD::compare_items, &CD::compare_keys);

   //DO THIS
   //thoroughly test your table
   ListArrayIterator<CD>* addCDs = cds->iterator();
   while (addCDs->hasNext())
   {
	   slt->tableInsert(addCDs->next());
   }
   cout << "\nSize after adding CDs: " << slt->tableSize() << endl;
   
   String* sk = new String("Omnivium");
   cout << "Retrieving " << "Omnivium" << "..." << endl;
   slt->tableRetrieve(sk)->displayCD();
   
   cout << "\nSize after retrieval: " << slt->tableSize() << endl;
   
   cout << "\n\nRemoving " << "Omnivium" << "..." << endl;
   bool isDelete = slt->tableRemove(sk);
   cout << "Successful? ";
   if (isDelete) cout << "Yes";
   else cout << "No";
   
   
   sk = new String("Programmed To Consume");
   cout << "\n\nRemoving " << "Programmed to Consume" << "..." << endl;
   isDelete = slt->tableRemove(sk);
   cout << "Successful? ";
   if (isDelete) cout << "Yes";
   else cout << "No";
   
   cout << "\n\n\nSize after removal: " << slt->tableSize() << endl;
   
   sk = new String("My Little Pony Anthology");
   cout << "\n\nRemoving item not in table, " << "My Little Pony Anthology" << "..." << endl;
   isDelete = slt->tableRemove(sk);
   cout << "Successful? ";
   if (isDelete) cout << "Yes";
   else cout << "No";
   
   cout << "\n\n\nSize after removal: " << slt->tableSize() << endl;
   
   sk = new String("Back in Black");
   cout << "\n\nRetrieving item not in table, " << "Back in Black" << "..." << endl;
   
   
   cout << "\n\nInserting duplicates..." << endl;
   ListArray<CD>* cds2 = CD::readCDs("cds.txt");
   ListArrayIterator<CD>* addCDs2 = cds2->iterator();
   while (addCDs2->hasNext())
   {
	   slt->tableInsert(addCDs2->next());
   }
   
   //finished size should be 310 since removed CDs are re-added
   cout << "Size after inserting duplicates: " << slt->tableSize();
   
   cout << "\n\n\nIs the table empty? ";
   if (!slt->tableIsEmpty()) cout << "No";
   else cout << "Yes";
   
   cout << "\n\n\nRemoving all CDs..." << endl;
   slt->~TableSortedList(); //deconstruct ALL THE THINGS
   
   cout << "\n\nIs the table empty? ";
   if(!slt->tableIsEmpty()) cout << "No";
   else cout << "Yes";
   
   deleteCDs(cds);
   delete cds;
   delete slt;
   return 0;
}
Beispiel #6
0
int main()
{
   //the unsorted ListArray of cds
   ListArray<CD>* cds = CD::readCDs("cds.txt");
   int numItems = cds->size();
   cout << numItems << endl;
   cout << endl;

   //test the binary search tree
   //insert all of the cds
   ListArrayIterator<CD>* iter = cds->iterator();
   BinarySearchTree<CD>* bst = new BinarySearchTree<CD>(&CD::compare_items, &CD::compare_keys);
   while(iter->hasNext())
   {
      CD* cd = iter->next();
      bst->insert(cd);
   }
   delete iter;

   BinaryTreeIterator<CD>* bst_iter = bst->iterator();
   bst_iter->setInorder();  //takes a snapshot of the data
   while(bst_iter->hasNext())
   {
      CD* cd = bst_iter->next();
      //cd->displayCD();
   }
   delete bst_iter;

   int height = bst->getHeight();
   bool balance = bst->isBalanced();

   if(balance == true)
   {
       cout << "\nThe height is " << height << " and it is balanced.\n";
   }
   else
   {
       cout << "\nThe height is " << height << " and it is not balanced.\n";
   }

   //create a minimum height binary search tree
   BinarySearchTree<CD>* min_bst = bst->minimize();
   bst_iter = min_bst->iterator();

   //make sure that an inorder traversal gives sorted order
   bst_iter->setInorder();  //takes a snapshot of the data
   while(bst_iter->hasNext())
   {
      CD* cd = bst_iter->next();
      //cd->displayCD();
   }
   delete bst_iter;

   height = min_bst->getHeight();
   balance = min_bst->isBalanced();

   if(balance == true)
   {
       cout << "\nThe minimum height is " << height << " and it is balanced.\n";
   }
   else
   {
       cout << "\nThe minimum height is " << height << " and it is not balanced.\n";
   }

   //create a complete binary search tree
   BinarySearchTree<CD>* complete_bst = bst->minimizeComplete();
   delete bst;

   //make sure that an inorder traversal gives sorted order
   bst_iter = complete_bst->iterator();										
   bst_iter->setInorder(); //takes a snapshot of the data
   while(bst_iter->hasNext())
   {
      CD* cd = bst_iter->next();
      //cd->displayCD();
   }
   delete bst_iter;

   height = complete_bst->getHeight();
   balance = complete_bst->isBalanced();

   if(balance == true)
   {
       cout << "\nThe minimum height is " << height << " and it is balanced.\n";
   }
   else
   {
       cout << "\nThe minimum height is " << height << " and it is not balanced.\n";
   }

   delete complete_bst;

   deleteCDs(cds);
   delete cds;
   return 0;
}
Beispiel #7
0
int main()
{
   ListArray<CD>* cds = CD::readCDs("cds.txt");
   int num_items = cds->size();
   cout << num_items << endl;

   TableSortedList<CD>* slt = new TableSortedList<CD>(&CD::compare_items, &CD::compare_keys);

   //DO THIS
   //thoroughly test your table
   
      ListArrayIterator<CD>* iter = cds->iterator();
	  
	 String* titles[310]; 
	 CD* cds2[310];
	 int count = 0; 
	 
	 CD* duplicateTest; // test duplicate CD to be added later
	 
   while(iter->hasNext())
   {
      CD* cd = iter->next();
	  duplicateTest = cd;
	  
	  cds2[count]=cd;
	  titles[count]=cds2[count]->getKey();
	  count++;
	  
      slt->tableInsert(cd);
   }
   delete iter;
   
   slt->tableInsert(duplicateTest); // Program should not insert this CD because it is a duplicate
   
   cout << "Table size after inserting all CDs is " << slt->tableSize() << endl;	// If insert works correctly, size should be 310 (If duplicate was added, it would be 311)

   for(count = 0; count < 310; count++)
   {
	CD* cdRetrieve = slt->tableRetrieve(titles[count]);	// testing the retrieve function, it should be able to find all 310 CDs
	if (cdRetrieve == NULL)
	cout << "Couldn't find CD" << endl;
	else
	cout << "Found CD #" << count+1 << endl;
   }
	

   
   count = 1;
   
   ListDoublyLinkedIterator<CD>* iter2 = slt->iterator();	// Testing the SLDL iterator, every CD should be displayed
   
   while(iter2->hasNext())
   {
   CD* cd3 = iter2->next();

   cout << "\nThis is CD #" << count << ":" << endl << endl;
   count++;
   
   cd3->displayCD();
   }
   
   for(int i = 0; i < 310; i++)
   {
   slt->tableRemove(titles[i]);
   }
   
   	cout << "Table size after removing all CDs is " << slt->tableSize();	// Table size should be 0 after removing everything


   deleteCDs(cds);
   delete cds;
   delete slt;
   return 0;
}