本文整理汇总了C++中DList类的典型用法代码示例。如果您正苦于以下问题:C++ DList类的具体用法?C++ DList怎么用?C++ DList使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DList类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char* argv[]) {
DList dl;
dl.reverse();
dl.push_back(200);
dl.push_back(300);
std::cout << dl;
dl.push_front(100);
std::cout << dl;
dl.reverse();
std::cout << dl;
// Let compiler figure out the type for dl2 based on expression
const decltype(dl) dl2 {10, 20, 30, 40, 50};
std::cout << dl2;
//dl2.push_front(0);
decltype(dl) dl3 = {1000, 2000, 3000, 4000, 5000};
dl3.reverse();
std::cout << dl3;
return 0;
}
示例2: test
void test(){
DList d;
d.PushFront(1);
d.PushFront(2);
d.PushFront(3);
d.PushFront(4);
d.PushFront(5);
cout << d;
d.Reverse();
cout << d;
//d.Sort();
//cout << d;
//Node *ret = d.Find(4);
//d.Insert(ret, 5);
//cout << d;
//d.ReMoveALL(3);
//cout << d;
//d.PopFront();
//cout << d;
//d.PopFront();
//cout << d;
//d.PopFront();
//cout << d;
//d.PopFront();
//cout << d;
}
示例3: main
int main()
{
DList<int> list;
int array[BUFF] = {1,3,2,4,7,5,6,9,0,8};
for(const auto &i : array)
list.push_back(i);
list.print();
return 0;
}
示例4: first
DList<T>& DList<T>::copy()
{
first();
DList<T> copyList;
Node<T> *tmp = first;
while(tmp)
{
copyList.insert(temp->item);
temp = temp->next;
}
return copyList;
}
示例5: test_1
void test_1() {
DList<int> list;
int i1 = 1;
int i2 = 2;
int i3 = 3;
int i4 = 1;
int i5 = 2;
int i6 = 3;
list.append(i1);
list.append(i2);
list.append(i3);
list.prepend(i4);
list.prepend(i5);
list.prepend(i6);
}
示例6: main
int main()
{
DList<int> Lista;
//insertamos elementos
for(int i = 0; i < 10; i++)
{
Lista.insertFirst(i);
}
//Utilizamos el iterador
cout<<"Valores lista"<<endl;
for(DList<int>::Iterator it(Lista);it.hasCurrent();it.next())
{
cout<<it.getCurrent()->getData()<<" ";
}
cout<<endl;
cout<<"Valores menor de la lista"<<endl;
cout<<searchMin(Lista)<<endl;
//simpleSort(Lista);
//quickSort(Lista);
//mergeSort(Lista);
sort(Lista);
cout<<"Valores lista ordenada"<<endl;
for(DList<int>::Iterator it(Lista);it.hasCurrent();it.next())
{
cout<<it.getCurrent()->getData()<<" ";
}
cout<<endl;
DList<int> lista2;
//probamos el intercambio entre listas
lista2.swap(Lista);
//probamos la asignacion estre listas
Lista = lista2;
if(lista2 == Lista)
{
cout<<"Listas son iguales"<<endl;
}
//Probamos los [] sobre la lista
//OJO esta operacion hace muy lento el acceso a la misma
for(int i = 0;i < Lista.getSize();i++)
{
cout<<Lista[i]<<" ";
}
cout<<endl;
return 0;
}
示例7: test_4
void test_4() {
DList<int> list;
DListIterator<int> iterator;
DListIterator<int> iteratorEnd;
int i1 = 1;
int i2 = 2;
int i3 = 3;
int i4 = 1;
int i5 = 2;
int i6 = 3;
int i;
list.append(i1);
list.append(i2);
list.append(i3);
list.prepend(i4);
list.prepend(i5);
list.prepend(i6);
list.begin(iterator);
list.end(iteratorEnd);
while (iterator != iteratorEnd) {
i = *iterator;
printf("%d\n", i);
iterator++;
}
}
示例8: boogie
void boogie( DList< int > &dl, DList< int > &ans )
{
if( !dl.size )
{
for( Node< int > *i = ans.first; i; i = i->r ) printf( " %d", i->v );
puts( "" );
return;
}
Node< int > *i = dl.first;
while( i )
{
dl.erase( i );
ans.push_back( i->v );
boogie( dl, ans );
ans.pop_back();
dl.restore( i );
i = i->r;
}
}
示例9: main
int main()
{
cout << "=============================== PROGRAMACIO II ================================" << endl;
cout << endl;
cout << endl;
DList<int> list;
list.PushBack(1);
list.PushBack(2);
list.PushBack(3);
list.PushBack(4);
cout << "Count: " << list.Count() << endl;
cout << "First: " << list.GetFirst()->data << endl;
cout << endl;
cout << endl;
cout << "===============================================================================" << endl;
system("pause");
return 0;
}
示例10: main
int main(int argc, const char * argv[])
{
DList<int> myList;
//for(int i = 0; i < 10; ++i)
// myList.addFront(i);
myList.addBack(50);
myList.addBack(100);
cout << myList.getFront() << endl;
cout << myList.getBack() << endl;
while(!myList.isEmpty())
cout << myList.removeFront() << endl;
cout << myList.getSize() << endl;
return 0;
}
示例11: main
int main()
{
DList list;
list.AddHead(3);
list.AddHead(2);
list.AddHead(1);
list.AddTail(5);
list.AddTail(6);
list.AddTail(7);
list.InsertAfter(3, 4);
list.showReverse();
return 0;
}
示例12: main
int main()
{
DList<int> list;
srand((unsigned)time(NULL));
for(int i = 0 ; i < 5 ; ++i)
{
list.findWithIndex(i);
list.insertNext(rand() % 50);
}
std::cout << list.getSize() << std::endl;
std::cout << "Before Sorting" << std::endl;
list.printAll();
list.sorting(comp);
std::cout << "\nAfter Sorting" << std::endl;
list.printAll();
return 0;
}
示例13: testDList
void UtilTestCase::testDList() {
DList<int> l;
CPPUNIT_ASSERT(l.isEmpty());
CPPUNIT_ASSERT(l.getSize() == 0);
CPPUNIT_ASSERT(l.getHeader()->getNext() == l.getHeader());
CPPUNIT_ASSERT(l.removeFirst() == NULL);
CPPUNIT_ASSERT(l.removeLast() == NULL);
DLink<int> n1(1);
CPPUNIT_ASSERT(n1.get() == 1);
DLink<int> n2(2);
CPPUNIT_ASSERT(n2.get() == 2);
n2.set(3);
CPPUNIT_ASSERT(n2.get() == 3);
// 测试addFirst和addLast
l.addFirst(&n1);
CPPUNIT_ASSERT(l.getSize() == 1);
CPPUNIT_ASSERT(!l.isEmpty());
CPPUNIT_ASSERT(l.getHeader()->getNext() == &n1);
CPPUNIT_ASSERT(l.getHeader()->getPrev() == &n1);
CPPUNIT_ASSERT(l.getHeader()->getNext()->getNext() == l.getHeader());
CPPUNIT_ASSERT(n1.getList() == &l);
CPPUNIT_ASSERT(n1.getNext() == l.getHeader());
CPPUNIT_ASSERT(n1.getPrev() == l.getHeader());
l.addLast(&n2);
CPPUNIT_ASSERT(l.getSize() == 2);
CPPUNIT_ASSERT(!l.isEmpty());
CPPUNIT_ASSERT(l.getHeader()->getNext() == &n1);
CPPUNIT_ASSERT(l.getHeader()->getPrev() == &n2);
CPPUNIT_ASSERT(l.getHeader()->getNext()->getNext() == &n2);
CPPUNIT_ASSERT(l.getHeader()->getNext()->getNext()->getNext() == l.getHeader());
CPPUNIT_ASSERT(n1.getNext() == &n2);
CPPUNIT_ASSERT(n1.getPrev() == l.getHeader());
CPPUNIT_ASSERT(n2.getList() == &l);
CPPUNIT_ASSERT(n2.getNext() == l.getHeader());
CPPUNIT_ASSERT(n2.getPrev() == &n1);
// 测试moveToFirst和moveToLast
l.moveToFirst(&n2);
CPPUNIT_ASSERT(l.getSize() == 2);
CPPUNIT_ASSERT(!l.isEmpty());
CPPUNIT_ASSERT(l.getHeader()->getNext() == &n2);
CPPUNIT_ASSERT(l.getHeader()->getPrev() == &n1);
CPPUNIT_ASSERT(l.getHeader()->getNext()->getNext() == &n1);
CPPUNIT_ASSERT(l.getHeader()->getNext()->getNext()->getNext() == l.getHeader());
CPPUNIT_ASSERT(n1.getPrev() == &n2);
CPPUNIT_ASSERT(n1.getNext() == l.getHeader());
CPPUNIT_ASSERT(n2.getPrev() == l.getHeader());
CPPUNIT_ASSERT(n2.getNext() == &n1);
l.moveToLast(&n2);
CPPUNIT_ASSERT(l.getSize() == 2);
CPPUNIT_ASSERT(!l.isEmpty());
CPPUNIT_ASSERT(l.getHeader()->getNext() == &n1);
CPPUNIT_ASSERT(l.getHeader()->getPrev() == &n2);
CPPUNIT_ASSERT(l.getHeader()->getNext()->getNext() == &n2);
CPPUNIT_ASSERT(l.getHeader()->getNext()->getNext()->getNext() == l.getHeader());
CPPUNIT_ASSERT(n1.getNext() == &n2);
CPPUNIT_ASSERT(n1.getPrev() == l.getHeader());
CPPUNIT_ASSERT(n2.getNext() == l.getHeader());
CPPUNIT_ASSERT(n2.getPrev() == &n1);
// 测试removeFirst
CPPUNIT_ASSERT(l.removeFirst() == &n1);
CPPUNIT_ASSERT(n1.getList() == NULL);
CPPUNIT_ASSERT(n1.getNext() == NULL);
CPPUNIT_ASSERT(n1.getPrev() == NULL);
CPPUNIT_ASSERT(l.getSize() == 1);
CPPUNIT_ASSERT(!l.isEmpty());
CPPUNIT_ASSERT(l.getHeader()->getNext() == &n2);
CPPUNIT_ASSERT(l.getHeader()->getPrev() == &n2);
CPPUNIT_ASSERT(l.getHeader()->getNext()->getNext() == l.getHeader());
CPPUNIT_ASSERT(n2.getNext() == l.getHeader());
CPPUNIT_ASSERT(n2.getPrev() == l.getHeader());
CPPUNIT_ASSERT(l.removeFirst() == &n2);
CPPUNIT_ASSERT(n2.getList() == NULL);
CPPUNIT_ASSERT(n2.getNext() == NULL);
CPPUNIT_ASSERT(n2.getPrev() == NULL);
CPPUNIT_ASSERT(l.isEmpty());
CPPUNIT_ASSERT(l.getSize() == 0);
CPPUNIT_ASSERT(l.getHeader()->getNext() == l.getHeader());
// 测试removeLast
l.addLast(&n1);
n1.addAfter(&n2);
CPPUNIT_ASSERT(l.removeLast() == &n2);
CPPUNIT_ASSERT(n2.getList() == NULL);
CPPUNIT_ASSERT(n2.getNext() == NULL);
CPPUNIT_ASSERT(n2.getPrev() == NULL);
CPPUNIT_ASSERT(l.getSize() == 1);
CPPUNIT_ASSERT(!l.isEmpty());
CPPUNIT_ASSERT(l.getHeader()->getNext() == &n1);
CPPUNIT_ASSERT(l.getHeader()->getPrev() == &n1);
CPPUNIT_ASSERT(l.getHeader()->getNext()->getNext() == l.getHeader());
CPPUNIT_ASSERT(n1.getNext() == l.getHeader());
CPPUNIT_ASSERT(n1.getPrev() == l.getHeader());
//.........这里部分代码省略.........
示例14: main
int main( int argc, char* argv[] ) {
// verify argument
if ( argc != 2 ) {
cerr << "usage: statistics size" << endl;
return -1;
}
// verify size
int size = atoi( argv[1] );
if ( size < PATTERN_MAX ) {
cerr << "usage: size >= " << PATTERN_MAX << endl;
return -1;
}
// initialize list items
srand( 1 );
int *items = new int[size];
initArray( items, size, -1 );
printArray( items, size, "items" );
// initialize access pattern
int *pattern = new int[PATTERN_MAX];
initArray( pattern, PATTERN_MAX, size );
printArray( pattern, PATTERN_MAX, "pattern" );
// initialize pattern frequency
int *frequency = new int[PATTERN_MAX];
for ( int i = 1; i < PATTERN_MAX; i++ )
frequency[i] = i + frequency[i - 1];
printArray( frequency, PATTERN_MAX, "frequency" );
// generate access sequence
int *sequence = new int[SEQ_MAX];
for ( int i = 0; i < SEQ_MAX; i++ ) {
int random = rand( ) % ( frequency[PATTERN_MAX - 1] + 1 );
int hit;
for ( hit = 0; hit < PATTERN_MAX; hit++ ) {
if ( random <= frequency[hit] ) {
break;
}
}
sequence[i] = items[pattern[hit]];
}
printArray( sequence, SEQ_MAX, "sequence" );
// now conduct performance evaluation
// doubly linked list
DList<int> dlist;
for ( int i = 0; i < size; i++ )
dlist.insert( items[i], i );
for ( int i = 0; i < SEQ_MAX; i++ )
dlist.find( sequence[i] );
cout << "dlist's find cost = " << dlist.getCost( ) << endl;
// mtf list
MtfList<int> mtflist;
for ( int i = 0; i < size; i++ )
mtflist.insert( items[i], i );
for ( int i = 0; i < SEQ_MAX; i++ )
mtflist.find( sequence[i] );
cout << "mtflist's find cost = " << mtflist.getCost( ) << endl;
// transpose list
TransposeList<int> translist;
for ( int i = 0; i < size; i++ )
translist.insert( items[i], i );
for ( int i = 0; i < SEQ_MAX; i++ )
translist.find( sequence[i] );
cout << "translist's find cost = " << translist.getCost( ) << endl;
// skip list
SList<int> skiplist;
for ( int i = 0; i < size; i++ )
skiplist.insert( items[i] );
for ( int i = 0; i < SEQ_MAX; i++ )
skiplist.find( sequence[i] );
cout << "skip's find cost = " << skiplist.getCost( ) << endl;
return 0;
}
示例15: set
// This method gets called when ever there was a MISS or Cache need
// to be reorganized in case if it reached to its capacity to hold entries.
void set(Key key, Value data)
{
Entry<Key,Value>* node = hash[key];
if(node) {
// refresh the link list
entries->remove(node);
node->data = data;
entries->addInFront(node);
}
else{
if ( cacheFull() ){
node = entries->tail->prev;
entries->remove(node);
hash.erase(node->key);
node->key = key;
node->data = data;
hash[key] = node;
entries->addInFront(node);
}
else{
node = new Entry<Key,Value>;
node->key = key;
node->data = data;
hash[key] = node;
entries->addInFront(node);
}
}
}