Вы находитесь на странице: 1из 13

#ifndef MULTMAPNODE_H

#define MULTMAPNODE_H

template< class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6> class Multmp;

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6> class MultmapNode {
friend class Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>;
public:
MultmapNode( const NODETYPE1 &, const NODETYPE2 &, const NODETYPE3 &, const
NODETYPE4 &, const NODETYPE5 &, const NODETYPE6 &);
NODETYPE1 getData1() const;
NODETYPE2 getData2() const;
NODETYPE3 getData3() const;
NODETYPE4 getData4() const;
NODETYPE5 getData5() const;
NODETYPE6 getData6() const;
//void setNextPtr (MultmapNode<NODETYPE1, NODETYPE2>
private:
NODETYPE1 data1;
NODETYPE2 data2;
NODETYPE3 data3;
NODETYPE4 data4;
NODETYPE5 data5;
NODETYPE6 data6;
MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>
*nextPtr;

};

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::MultmapNode(const NODETYPE1 &info1, const NODETYPE2 &info2,
const NODETYPE3 &info3, const NODETYPE4 &info4,
const NODETYPE5 &info5, const NODETYPE6 &info6)
: data1(info1), data2(info2), data3(info3), data4(info4), data5(info5),
data6(info6), nextPtr(0) {}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
NODETYPE1 MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::getData1() const {return data1;}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
NODETYPE2 MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::getData2() const {return data2;}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
NODETYPE3 MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::getData3() const {return data3;}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
NODETYPE4 MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::getData4() const {return data4;}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
NODETYPE5 MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::getData5() const {return data5;}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
NODETYPE6 MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::getData6() const {return data6;}

#endif

#pragma once
#ifndef MULTMP_H
#define MULTMP_H
#include <iostream>
#include <cassert>
#include "Multmapnode.h"

using std::cout;

template< class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
class Multmp
{
friend class MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4,
NODETYPE5, NODETYPE6>;
public:
Multmp(void);
~Multmp();
void insertAtFront( const NODETYPE1 &, const NODETYPE2 &, const NODETYPE3 &,
const NODETYPE4 &, const NODETYPE5 &,
const NODETYPE6 & );
void changeValuesKey_1( const NODETYPE1 &, const NODETYPE1 &,
const NODETYPE2 &, const NODETYPE3 &,
const NODETYPE4 &, const NODETYPE5 &,
const NODETYPE6 & );
void changeValuesKey_2( const NODETYPE2 &, const NODETYPE1 &,
const NODETYPE2 &, const NODETYPE3 &,
const NODETYPE4 &, const NODETYPE5 &,
const NODETYPE6 & );
void changeValuesKey_3( const NODETYPE3 &, const NODETYPE1 &,
const NODETYPE2 &, const NODETYPE3 &,
const NODETYPE4 &, const NODETYPE5 &,
const NODETYPE6 & );
void changeValues2Key_12( const NODETYPE1 &, const NODETYPE2 &,
const NODETYPE1 &, const NODETYPE2 &,
const NODETYPE3 &, const NODETYPE4 &,
const NODETYPE5 &, const NODETYPE6 & );
void changeValues2Key_13( const NODETYPE1 &, const NODETYPE3 &,
const NODETYPE1 &, const NODETYPE2 &,
const NODETYPE3 &, const NODETYPE4 &,
const NODETYPE5 &, const NODETYPE6 & );
void changeValues2Key_23( const NODETYPE2 &, const NODETYPE3 &,
const NODETYPE1 &, const NODETYPE2 &,
const NODETYPE3 &, const NODETYPE4 &,
const NODETYPE5 &, const NODETYPE6 & );
void changeValues3Key( const NODETYPE1 &, const NODETYPE2 &,
const NODETYPE3 &, const NODETYPE1 &,
const NODETYPE2 &, const NODETYPE3 &,
const NODETYPE4 &, const NODETYPE5 &,
const NODETYPE6 & );
//void insertAtBack( const NODETYPE1 &, const NODETYPE2 & );
//bool removeFromFront ( const NODETYPE1 &, const NODETYPE2 & );
//bool removeFromBack ( const NODETYPE1 &, const NODETYPE2 & );
bool isEmpty() const;
void print() const;
private:
MultmapNode< NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6> *firstPtr;
//MultmapNode< NODETYPE1, NODETYPE2> first;
MultmapNode< NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6> *lastPtr;
//MultmapNode< NODETYPE1, NODETYPE2> last;

MultmapNode< NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,


NODETYPE6> *getNewNode (const NODETYPE1 &, const NODETYPE2 &,
const NODETYPE3 &, const NODETYPE4 &,
const NODETYPE5 &,
const NODETYPE6 & );
};

template< class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::Multmp() : firstPtr(0), lastPtr(0) {}

template< class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>::~Multmp()
{
if (!isEmpty() ) {
cout << "Destroying nodes...\n";

MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,


NODETYPE6> *currentPtr = firstPtr, *tempPtr;

while (currentPtr != 0) {
tempPtr = currentPtr;
cout << tempPtr->data1 << "\n";
currentPtr = currentPtr->nextPtr;
delete tempPtr;
}
}

cout << "All nodes destroyed\n\n";


}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
void Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::insertAtFront( const NODETYPE1 &value1,
const NODETYPE2 &value2,
const NODETYPE3 &value3,
const NODETYPE4 &value4,
const NODETYPE5 &value5,
const NODETYPE6 &value6 )
{
// cout << "test values1: "<< value1 << "and test values 2:" << value2<< "\n";
MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>
*newPtr = getNewNode(value1, value2, value3, value4, value5, value6);
//MultmapNode<NODETYPE1, NODETYPE2> *newPtr = 0;
//MultmapNode< NODETYPE1, NODETYPE2> getNewNode(value1, value2);
//newPtr = &getNewNode;
//cout << getNewNode->getData1() << "\n "
// << getNewNodegetData2() << "\n ";

if ( isEmpty() ) {
//firstPtr->nextPtr = lastPtr;
newPtr->nextPtr = firstPtr;
cout << "Ptraddress: " <<newPtr->nextPtr << "\n";
firstPtr = newPtr;
// cout << "first ptr data: " << firstPtr->getData1() << "\n "
// << "second ptr data:" << firstPtr->getData2() << "\n ";
// first = getNewNode;
}
else {
newPtr->nextPtr = firstPtr;
//getNewNode->nextPtr
firstPtr = newPtr;
// cout << "Ptraddress2: " <<newPtr->nextPtr << "\n";
firstPtr = newPtr;
// cout << firstPtr->getData1() << "\n "
// << firstPtr->getData2() << "\n ";
}
}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
void Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::changeValuesKey_1( const NODETYPE1 &key, const NODETYPE1 &value1,
const NODETYPE2 &value2,
const NODETYPE3 &value3,
const NODETYPE4 &value4,
const NODETYPE5 &value5,
const NODETYPE6 &value6 )
{
if (isEmpty() ) {
cout << "The list is empty\n\n";
return;
}

MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>


*currentPtr = firstPtr;
//currentPtr = firstPtr;
//cout << "at print(): " << firstPtr->getData1() << "\n "
// << "at print(): "<< firstPtr->getData2() << "\n ";
NODETYPE1 keyvalue = currentPtr->getData1();
cout << "The list is: ";

while ( currentPtr != 0) {
//MultmapNode<NODETYPE1, NODETYPE2> a = currentPtr;
//cout << currentPtr->getData1() << " \n";
//cout << "enter: ";
//int x;
//cin >>x;
NODETYPE1 keyvalue = currentPtr->getData1();
if (key == keyvalue){
currentPtr->data1 = value1;
currentPtr->data2 = value2;
currentPtr->data3 = value3;
currentPtr->data4 = value4;
currentPtr->data5 = value5;
} currentPtr->data6 = value6;

currentPtr = currentPtr->nextPtr;
}
}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
void Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::changeValuesKey_2( const NODETYPE2 &key,
const NODETYPE1 &value1,
const NODETYPE2 &value2,
const NODETYPE3 &value3,
const NODETYPE4 &value4,
const NODETYPE5 &value5,
const NODETYPE6 &value6 )
{
if (isEmpty() ) {
cout << "The list is empty\n\n";
return;
}

MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>


*currentPtr = firstPtr;
//currentPtr = firstPtr;
//cout << "at print(): " << firstPtr->getData1() << "\n "
// << "at print(): "<< firstPtr->getData2() << "\n ";
NODETYPE2 keyvalue = currentPtr->getData2();
cout << "The list is: ";

while ( currentPtr != 0) {
//MultmapNode<NODETYPE1, NODETYPE2> a = currentPtr;
//cout << currentPtr->getData1() << " \n";
//cout << "enter: ";
//int x;
//cin >>x;
NODETYPE2 keyvalue = currentPtr->getData2();
if (key == keyvalue){
currentPtr->data1 = value1;
currentPtr->data2 = value2;
currentPtr->data3 = value3;
currentPtr->data4 = value4;
currentPtr->data5 = value5;
} currentPtr->data6 = value6;
currentPtr = currentPtr->nextPtr;
}
}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
void Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::changeValuesKey_3( const NODETYPE3 &key, const NODETYPE1 &value1,
const NODETYPE2 &value2, const NODETYPE3 &value3,
const NODETYPE4 &value4, const NODETYPE5 &value5,
const NODETYPE6 &value6 )
{
if (isEmpty() ) {
cout << "The list is empty\n\n";
return;
}

MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>


*currentPtr = firstPtr;
//currentPtr = firstPtr;
//cout << "at print(): " << firstPtr->getData1() << "\n "
// << "at print(): "<< firstPtr->getData2() << "\n ";
NODETYPE3 keyvalue = currentPtr->getData3();
cout << "The list is: ";

while ( currentPtr != 0) {
//MultmapNode<NODETYPE1, NODETYPE2> a = currentPtr;
//cout << currentPtr->getData1() << " \n";
//cout << "enter: ";
//int x;
//cin >>x;
NODETYPE3 keyvalue = currentPtr->getData3();
if (key == keyvalue){
currentPtr->data1 = value1;
currentPtr->data2 = value2;
currentPtr->data3 = value3;
currentPtr->data4 = value4;
currentPtr->data5 = value5;
} currentPtr->data6 = value6;

currentPtr = currentPtr->nextPtr;
}
}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
void Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::changeValues2Key_12( const NODETYPE1 &key1, const NODETYPE2 &key2,
const NODETYPE1 &value1, const NODETYPE2 &value2,
const NODETYPE3 &value3, const NODETYPE4 &value4,
const NODETYPE5 &value5, const NODETYPE6 &value6 )
{
if (isEmpty() ) {
cout << "The list is empty\n\n";
return;
}
MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>
*currentPtr = firstPtr;
//currentPtr = firstPtr;
//cout << "at print(): " << firstPtr->getData1() << "\n "
// << "at print(): "<< firstPtr->getData2() << "\n ";
NODETYPE1 keyvalue1 = currentPtr->getData1();
NODETYPE2 keyvalue2 = currentPtr->getData2();
cout << "The list is: ";

while ( currentPtr != 0) {
//MultmapNode<NODETYPE1, NODETYPE2> a = currentPtr;
//cout << currentPtr->getData1() << " \n";
//cout << "enter: ";
//int x;
//cin >>x;
NODETYPE1 keyvalue1 = currentPtr->getData1();
NODETYPE2 keyvalue2 = currentPtr->getData2();
if (key1 == keyvalue1 && key2 == keyvalue2){
currentPtr->data1 = value1;
currentPtr->data2 = value2;
currentPtr->data3 = value3;
currentPtr->data4 = value4;
currentPtr->data5 = value5;
} currentPtr->data6 = value6;

currentPtr = currentPtr->nextPtr;
}
}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
void Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::changeValues2Key_13( const NODETYPE1 &key1, const NODETYPE3 &key3,
const NODETYPE1 &value1, const NODETYPE2 &value2,
const NODETYPE3 &value3, const NODETYPE4 &value4,
const NODETYPE5 &value5, const NODETYPE6 &value6 )
{
if (isEmpty() ) {
cout << "The list is empty\n\n";
return;
}

MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>


*currentPtr = firstPtr;
//currentPtr = firstPtr;
//cout << "at print(): " << firstPtr->getData1() << "\n "
// << "at print(): "<< firstPtr->getData2() << "\n ";
NODETYPE1 keyvalue1 = currentPtr->getData1();
NODETYPE3 keyvalue3 = currentPtr->getData3();
cout << "The list is: ";

while ( currentPtr != 0) {
//MultmapNode<NODETYPE1, NODETYPE2> a = currentPtr;
//cout << currentPtr->getData1() << " \n";
//cout << "enter: ";
//int x;
//cin >>x;
NODETYPE1 keyvalue1 = currentPtr->getData1();
NODETYPE3 keyvalue3 = currentPtr->getData3();
if (key1 == keyvalue1 && key3 == keyvalue3){
currentPtr->data1 = value1;
currentPtr->data2 = value2;
currentPtr->data3 = value3;
currentPtr->data4 = value4;
currentPtr->data5 = value5;
} currentPtr->data6 = value6;

currentPtr = currentPtr->nextPtr;
}
}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
void Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::changeValues2Key_23( const NODETYPE2 &key2,
const NODETYPE3 &key3,
const NODETYPE1 &value1,
const NODETYPE2 &value2,
const NODETYPE3 &value3,
const NODETYPE4 &value4,
const NODETYPE5 &value5,
const NODETYPE6 &value6 )
{
if (isEmpty() ) {
cout << "The list is empty\n\n";
return;
}

MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>


*currentPtr = firstPtr;
//currentPtr = firstPtr;
//cout << "at print(): " << firstPtr->getData1() << "\n "
// << "at print(): "<< firstPtr->getData2() << "\n ";
NODETYPE2 keyvalue2 = currentPtr->getData2();
NODETYPE3 keyvalue3 = currentPtr->getData3();
cout << "The list is: ";

while ( currentPtr != 0) {
//MultmapNode<NODETYPE1, NODETYPE2> a = currentPtr;
//cout << currentPtr->getData1() << " \n";
//cout << "enter: ";
//int x;
//cin >>x;
NODETYPE2 keyvalue2 = currentPtr->getData2();
NODETYPE3 keyvalue3 = currentPtr->getData3();
if (key2 == keyvalue2 && key3 == keyvalue3){
currentPtr->data1 = value1;
currentPtr->data2 = value2;
currentPtr->data3 = value3;
currentPtr->data4 = value4;
currentPtr->data5 = value5;
currentPtr->data6 = value6;
}
currentPtr = currentPtr->nextPtr;
}
}

template<class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
void Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::changeValues3Key( const NODETYPE1 &key1, const NODETYPE2 &key2,
const NODETYPE3 &key3, const NODETYPE1 &value1,
const NODETYPE2 &value2, const NODETYPE3 &value3,
const NODETYPE4 &value4, const NODETYPE5 &value5,
const NODETYPE6 &value6 )
{
if (isEmpty() ) {
cout << "The list is empty\n\n";
return;
}

MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>


*currentPtr = firstPtr;
//currentPtr = firstPtr;
//cout << "at print(): " << firstPtr->getData1() << "\n "
// << "at print(): "<< firstPtr->getData2() << "\n ";
NODETYPE1 keyvalue1 = currentPtr->getData1();
NODETYPE2 keyvalue2 = currentPtr->getData2();
NODETYPE3 keyvalue3 = currentPtr->getData3();
cout << "The list is: ";

while ( currentPtr != 0) {
//MultmapNode<NODETYPE1, NODETYPE2> a = currentPtr;
//cout << currentPtr->getData1() << " \n";
//cout << "enter: ";
//int x;
//cin >>x;
NODETYPE1 keyvalue1 = currentPtr->getData1();
NODETYPE2 keyvalue2 = currentPtr->getData2();
NODETYPE3 keyvalue3 = currentPtr->getData3();
if (key1 == keyvalue1 && key2 == keyvalue2 && key3 == keyvalue3){
currentPtr->data1 = value1;
currentPtr->data2 = value2;
currentPtr->data3 = value3;
currentPtr->data4 = value4;
currentPtr->data5 = value5;
} currentPtr->data6 = value6;

currentPtr = currentPtr->nextPtr;
}
}

template< class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6>
bool Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::isEmpty() const
{ return firstPtr == 0; }
template< class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,
class NODETYPE5, class NODETYPE6 >
MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>
*Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::getNewNode(
const NODETYPE1 &value1, const NODETYPE2 &value2,
const NODETYPE3 &value3, const NODETYPE4 &value4,
const NODETYPE5 &value5, const NODETYPE6 &value6 )
{
MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>
*ptr = new MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>(value1, value2, value3, value4, value5, value6);
assert (ptr != 0);
return ptr;
}

template< class NODETYPE1, class NODETYPE2, class NODETYPE3, class NODETYPE4,


class NODETYPE5, class NODETYPE6 >
void Multmp<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5,
NODETYPE6>::print() const
{
if (isEmpty() ) {
cout << "The list is empty\n\n";
return;
}

MultmapNode<NODETYPE1, NODETYPE2, NODETYPE3, NODETYPE4, NODETYPE5, NODETYPE6>


*currentPtr = firstPtr;
//currentPtr = firstPtr;
//cout << "at print(): " << firstPtr->getData1() << "\n "
// << "at print(): "<< firstPtr->getData2() << "\n ";

cout << "The list is: ";

while ( currentPtr != 0) {
//MultmapNode<NODETYPE1, NODETYPE2> a = currentPtr;
cout << currentPtr->getData1() << " ,"
<< currentPtr->getData2() << " ,"
<< currentPtr->getData3() << " , "
<< currentPtr->getData4() << " , "
<< currentPtr->getData5() << " , "
<< currentPtr->getData6() << " \n";
//cout << "enter: ";
//int x;
//cin >>x;
currentPtr = currentPtr->nextPtr;
}

cout << "\n\n";


}

#endif

// maptest4.cpp : main project file.

#include "stdafx.h"
#include <iostream>
#include "Multmp.h"
using std::cin;
using std::endl;

using namespace System;

template< class T1, class T2, class T3, class T4, class T5, class T6>
void testMultimap( Multmp<T1,T2,T3,T4,T5,T6> &MultmpObject, const char *type1,
const char *type2, const char *type3, const char *type4,
const char *type5, const char *type6)
{
cout << "Testing a Multimap of " << type1 << "," << type2 << "," << type3
<< "," << type4 << "," << type5 << "and of" << type6 << "values\n";

instructions();
int choice;
int keyposition;
int keyposition1, keyposition2;
T1 key1;
T2 key2;
T3 key3;
T1 key;
T1 value1;
T2 value2;
T3 value3;
T4 value4;
T5 value5;
T6 value6;

do {
cout << "?";
cin >> choice;
switch (choice) {
case 1:
cout << "Enter six value's : ";
cin >> value1 >> value2 >> value3
>> value4 >> value5 >> value6;

MultmpObject.insertAtFront( value1, value2, value3, value4,


value5, value6);
MultmpObject.print();
break;
case 2:
cout << "Enter key position (integer from 1-3), key,
and six value's: ";
cin >> keyposition >> key >> value1 >> value2 >> value3
>> value4 >> value5 >> value6;
if (keyposition == 1)
MultmpObject.changeValuesKey_1(key, value1, value2, value3,
value4, value5, value6);
else if (keyposition == 2)
MultmpObject.changeValuesKey_2(key, value1, value2, value3,
value4, value5, value6);
else
MultmpObject.changeValuesKey_3(key, value1, value2, value3,
value4, value5, value6);
MultmpObject.print();
break;
case 3:
cout << " Enter two key positions (integers from 1-3): ";
cin >> keyposition1 >> keyposition2;
if (keyposition1 == 1 && keyposition2 == 2) {
cout << "Enter two key values, and six value's: ";
cin >> key1 >> key2 >> value1 >> value2 >> value3
>> value4 >> value5 >> value6;
MultmpObject.changeValues2Key_12(key1, key2, value1,
value2, value3,
value4, value5,
value6);
}
else if (keyposition1 == 2 && keyposition2 == 1) {
cout << "Enter two key values (in order of selected
positions), and six value's: ";
cin >> key2 >> key1 >> value1 >> value2 >> value3
>> value4 >> value5 >> value6;
MultmpObject.changeValues2Key_12(key1, key2, value1,
value2, value3,
value4, value5,
value6);
}
else if (keyposition1 == 1 && keyposition2 == 3) {
cout << "Enter two key values (in order of selected
positions), and six value's: ";
cin >> key1 >> key3 >> value1 >> value2 >> value3
>> value4 >> value5 >> value6;
MultmpObject.changeValues2Key_13(key1, key3, value1,
value2, value3,
value4, value5,
value6);
}
else if (keyposition1 == 3 && keyposition2 == 1) {
cout << "Enter two key values (in order of selected
positions), and six value's: ";
cin >> key3 >> key1 >> value1 >> value2 >> value3
>> value4 >> value5 >> value6;
MultmpObject.changeValues2Key_13(key1, key3, value1,
value2, value3,
value4, value5,
value6);
}
else if (keyposition1 == 2 && keyposition2 == 3) {
cout << "Enter two key values (in order of selected
positions), and six value's: ";
cin >> key2 >> key3 >> value1 >> value2 >> value3
>> value4 >> value5 >> value6;
MultmpObject.changeValues2Key_23(key2, key3, value1,
value2, value3,
value4, value5,
value6);
}
else {
cout << "Enter two key values (in order of selected
positions), and six value's: ";
cin >> key3 >> key2 >> value1 >> value2 >> value3
>> value4 >> value5 >> value6;
MultmpObject.changeValues2Key_23(key2, key3, value1,
value2, value3,
value4, value5,
value6);
}
MultmpObject.print();
break;
case 4:
cout << "Enter three key values (in the order 1, 2, and 3),
and six value's: ";
cin >> key1 >> key2 >> key3 >> value1 >> value2 >> value3
>> value4 >> value5 >> value6;
MultmpObject.changeValues3Key(key1, key2, key3, value1,
value2, value3, value4,
value5, value6);
MultmpObject.print();
break;
}
} while ( choice != 5);

cout << "End list test\n\n";


}

void instructions()
{
cout << "Enter one of the following:\n"
<< "1 to insert at the beggining of the list\n"
<< "2 to change selection by 1 key search values of list\n"
<< "3 to change selection by 2 key search values of list\n"
<< "4 to change selection by 3 key search values of list\n"
<< "5 to end list processing\n";
}

int main(array<System::String ^> ^args)


{
Multmp<int, int, int, int, int, int> integerMultmp;
//MultmapNode<int, int> a(1,2);
//cout << a.getData1();
//integerMultmp.insertAtFront( 1, 2);
testMultimap( integerMultmp, "integer", "integer", "integer", "integer",
"integer", "integer");
//Multmp<int, double> mixedMultmp;
//testMultimap(mixedMultmp, "integer", "double");

Console::WriteLine(L"Hello World");
return 0;
}

Вам также может понравиться