当前位置: 首页>>代码示例>>C++>>正文


C++ DoublyLinkedList类代码示例

本文整理汇总了C++中DoublyLinkedList的典型用法代码示例。如果您正苦于以下问题:C++ DoublyLinkedList类的具体用法?C++ DoublyLinkedList怎么用?C++ DoublyLinkedList使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了DoublyLinkedList类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: testDoublyLinked

static void testDoublyLinked()
{
    DoublyLinkedList<TestItem, offsetof(TestItem, dlMembership)> list;

    unsigned i;
    for(i = 10; i > 0; --i)
    {
        TestItem *pItem = new TestItem;
        pItem->x = i;
        list.prepend(pItem);
    }

    TestItem *pItem;
    for(pItem = list.getLast(), i = 10; pItem;
        --i, pItem = list.getPrevious(pItem))
    {
        assert(pItem->x == i);
    }
    assert(i == 0); // we saw them all
}
开发者ID:cwestin,项目名称:bobt,代码行数:20,代码来源:dpcmain.cpp

示例2: TEST_F

//
//  At
//
TEST_F( SimplexSupportDoublyLinkedList, AtReturnsObjectAtSpecifiedIndex )
{
    MockStruct* m1 = new MockStruct();
    MockStruct* m2 = new MockStruct();
    MockStruct* m3 = new MockStruct();

    DoublyLinkedList list;

    list.PushBack(m1);
    list.PushBack(m2);
    list.PushBack(m3);

    ASSERT_EQ(list.At(0)->Value, (MockStruct*)m1);
    ASSERT_EQ(list.At(1)->Value, (MockStruct*)m2);
    ASSERT_EQ(list.At(2)->Value, (MockStruct*)m3);

    delete(m1);
    delete(m2);
    delete(m3);
}
开发者ID:theomission,项目名称:simplex-framework,代码行数:23,代码来源:DoublyLinkedList_Tests.cpp

示例3: main

int main()
{
	if(runTests())
	{
		DoublyLinkedList<int> list;
		unsigned int numberOfPeople;
		unsigned int currentIndex;

		list.clear();
		for (unsigned int count = 0; count < numberOfPeople; ++count)
		{
			list.pushBack(count + 1);
		}

		while(numberOfPeople > 1)
		{
			for (unsigned int skip = 0; skip < 33; ++skip)
			{
				currentIndex++;
				if( currentIndex > list.size() )
					currentIndex = 1;
			}
				list.removeAt(currentIndex-1);
				numberOfPeople--;
		}

		cout << "Person number: " << list.popBack() << "is left" << endl;
	}
	return 0;
}
开发者ID:Pufferfiz,项目名称:Portfolio,代码行数:30,代码来源:Driver.cpp

示例4: GetYMatrix

//===================================================================//
double* GetYMatrix(void){

	DoublyLinkedList<Point> *list = Picker.GetPoints();
	Node<Point> *currNode = list->getHead();
	int n = list->getSize();

	double *y = new double[n];

	if(!y){
		printf("Insufficient memory for the Y allocation!\n");
		exit(0);
	}

	for(int i=0; i<n; i++){

		y[i] = currNode->data[Y];
		currNode = currNode->next;

	}

	return y;
}
开发者ID:ruanmed,项目名称:Numerical-Interpolation,代码行数:23,代码来源:main.cpp

示例5: main

void main()
{
	cout<<"\t\t\t\t>>SORTED<<\n\t\t\t>>Doubly Linked List<<\n\n";
	int op;		//variable to store choice of operation
	int value;	//variable to store value into node
	char ext;	//variable to exit loop
	int cnt;	//variable to store count of nodes
	int search=2;	//variable to store search results
	
	DoublyLinkedList<int> obj;	//created object of Doubly linked list
	do
	{
cout<<"\t\tWhat to do?\n1. Add Item\n2. Delete from Head\n3. Delete from Tail\n4. Search Data in List\n5. Delete Node with Specific Data\n6. Check Total Number of Nodes\n7. Print List\n\tYour Choice = ";		cin>>op;
		if(op==1)
		{
			cout<<"Enter Value to be stored = ";	
			cin>>value;
			obj.add_item(value);
		}
		else if(op==2)
		{
			obj.deletefromDLLhead();
		}
		else if(op==3)
		{
			obj.deletefromDLLtail();
		}
		else if(op==4)
		{
			cout<<"Enter Data to Search = ";	cin>>value;
			search = obj.search_item(value);
			if(search==1)
				cout<<value<<" Found in LinkList!";
			else if(search==0)
				cout<<"ERROR:: Value NOT Found!";
		}
开发者ID:InamTaj,项目名称:data-structures,代码行数:36,代码来源:mycode.cpp

示例6: isListPagedOut

static bool isListPagedOut(double deadline, DoublyLinkedList<MarkedBlock>& list)
{
    unsigned itersSinceLastTimeCheck = 0;
    MarkedBlock* block = list.head();
    while (block) {
        block = block->next();
        ++itersSinceLastTimeCheck;
        if (itersSinceLastTimeCheck >= Heap::s_timeCheckResolution) {
            double currentTime = WTF::monotonicallyIncreasingTime();
            if (currentTime > deadline)
                return true;
            itersSinceLastTimeCheck = 0;
        }
    }
    return false;
}
开发者ID:boska,项目名称:webkit,代码行数:16,代码来源:MarkedAllocator.cpp

示例7: GetVolume

// RemoveAttribute
status_t
Node::RemoveAttribute(Attribute *attribute)
{
	status_t error = (attribute && attribute->GetNode() == this
					  ? B_OK : B_BAD_VALUE);
	if (error == B_OK) {
		// move all iterators pointing to the attribute to the next attribute
		if (GetVolume()->IteratorLock()) {
			// set the iterators' current entry
			Attribute *nextAttr = fAttributes.GetNext(attribute);
			DoublyLinkedList<AttributeIterator> *iterators
				= attribute->GetAttributeIteratorList();
			for (AttributeIterator *iterator = iterators->First();
				 iterator;
				 iterator = iterators->GetNext(iterator)) {
				iterator->SetCurrent(nextAttr, true);
			}
			// Move the iterators from one list to the other, or just remove
			// them, if there is no next attribute.
			if (nextAttr) {
				DoublyLinkedList<AttributeIterator> *nextIterators
					= nextAttr->GetAttributeIteratorList();
				nextIterators->MoveFrom(iterators);
			} else
				iterators->RemoveAll();
			GetVolume()->IteratorUnlock();
		} else
			error = B_ERROR;
		// remove the attribute
		if (error == B_OK) {
			error = GetVolume()->NodeAttributeRemoved(GetID(), attribute);
			if (error == B_OK) {
				fAttributes.Remove(attribute);
				attribute->SetNode(NULL);
				MarkModified();
			}
		}
	}
	return error;
}
开发者ID:SummerSnail2014,项目名称:haiku,代码行数:41,代码来源:Node.cpp

示例8: _tmain

int _tmain(int argc, _TCHAR* argv[])
{


	
	cout << "Lista Doblemente Enlazada de Int" << endl;
	DoublyLinkedList<int> l;
	l.insertarFinal(2);
	l.insertarFinal(4);
	l.insertarFinal(5);
	l.insertarInicio(6);
	l.insertar(8, 2);
	cout << l;
	cout << endl;
	l.remover(3);
	cout << l;
	cout << endl;
	cout << l.getElemento(2);
	cout << endl;

	cout <<"Inicia el iterador Preincremento"<< endl;
	// Probar Iteradores
	Iterador<int> it = l.begin();
	while (it != l.end()) {
		cout << *it << endl;
		++it;
	}

	cout << "Inicia el iterador Postincremento" << endl;
	// Probar Iteradores posincremento
	Iterador<int> itB = l.begin();
	while (itB != l.end()) {
		cout << *(itB++) << endl;
	}
	cout << endl;
	
	cout << "Inicia el iterador Predecremento" << endl;
	// Probar Iteradores
	Iterador<int> itC = l.rBegin();
	while (itC != l.rEnd()) {
		cout << *itC << endl;
		--itC;
	}

	cout << "Inicia el iterador Postdecremento" << endl;
	// Probar Iteradores posincremento
	Iterador<int> itD = l.rBegin();
	while (itD != l.rEnd()) {
		cout << *(itD--) << endl;
	}
	cout << endl;


	cout << "Lista Doblemente Enlazada de Double" << endl;
	DoublyLinkedList<double> lD;
	lD.insertarFinal(2.5);
	lD.insertarFinal(6.4);
	lD.insertarFinal(7.5);
	lD.insertarInicio(6.1);
	lD.insertar(89.1, 2);
	cout << lD;
	cout << endl;

	cout << "Inicia el iterador Preincremento" << endl;
	// Probar Iteradores
	Iterador<double> it1 = lD.begin();
	while (it1 != lD.end()) {
		cout << *it1 << endl;
		++it1;
	}

	cout << "Inicia el iterador Postincremento" << endl;
	// Probar Iteradores posincremento
	Iterador<double> it2 = lD.begin();
	while (it2 != lD.end()) {
		cout << *(it2++) << endl;
	}
	cout << endl;

	cout << "Inicia el iterador Predecremento" << endl;
	// Probar Iteradores
	Iterador<double> it3 = lD.rBegin();
	while (it3 != lD.rEnd()) {
		cout << *it3 << endl;
		--it3;
	}

	cout << "Inicia el iterador Postdecremento" << endl;
	// Probar Iteradores posincremento
	Iterador<double> it4 = lD.rBegin();
	while (it4 != lD.rEnd()) {
		cout << *(it4--) << endl;
	}
	cout << endl;

	cout << "Lista Doblemente Enlazada de Char" << endl;
	DoublyLinkedList<char> lC;
	lC.insertarFinal('a');
	lC.insertarFinal('$');
	lC.insertarFinal('r');
//.........这里部分代码省略.........
开发者ID:fugar09,项目名称:Lista-Doble-enlazada,代码行数:101,代码来源:main.cpp

示例9: main

int main() 
{
    // Grab current cout flags, used for when the stream is altered and the user wants
    //   to reset it to the default values: 
    ios::fmtflags f( cout.flags() );

    // Test 1:
    {
      SinglyLinkedList<char>* list = new SinglyLinkedList<char>();

      char var = 'A';

      for (int i = 1; i <= 10; i++) 
        {
        list->pushBack(var);
        var++;
      }

      cout << endl << "Test 1 - Char list:" << endl << "\t";
      list->print();
        cout << endl;
    }

    // Reset cout stream flags:
    cout.flags(f);

    // Test 2:
    {
        DoublyLinkedList<myType>* list = new DoublyLinkedList<myType>();

        myType var = 1;

        for (int i = 1; i <= 10; i++) 
        {
            list->pushBack(var);
            var++;
        }

        cout << endl << "Test 2 - Int list:" << endl << "\t";
        list->print();
        cout << endl;
    }

    // Reset cout stream flags:
    cout.flags(f);

    // Test 3:
    {
        BinaryTree<int>* bt = new BinaryTree<int>();

        // Insert a bunch of stuff:
        bt->insert(11);
        bt->insert(6);
        bt->insert(8);
        bt->insert(19);
        bt->insert(4);
        bt->insert(10);
        bt->insert(5);
        bt->insert(17);
        bt->insert(43);
        bt->insert(49);
        bt->insert(31);

        // Print tree preOrderTraversal:
        cout << endl << "Binary Tree PreOrderTravesal:" << endl << "\t";
        bt->preOrderTraversal();
        cout << endl;

        // Print tree inOrderTraversal:
        cout << endl << "Binary Tree InOrderTravesal:" << endl << "\t";
        bt->inOrderTraversal();
        cout << endl;

        // Print tree postOrderTraversal:
        cout << endl << "Binary Tree PostOrderTravesal:" << endl << "\t";
        bt->postOrderTraversal();
        cout << endl;
    }

    cout << endl;

    return 0;
}
开发者ID:calebwherry,项目名称:Cpp-Libraries,代码行数:83,代码来源:data-structure-tests.cpp

示例10: testDoublyLinkedListAuto

bool testDoublyLinkedListAuto() {
	DoublyLinkedList list;
	list.push_back(5.0);
	if (list.is_empty() || list.get_head()->get_value() != 5.0) {
		return false;
	}
	if (list.is_empty() || list.get_tail()->get_value() != 5.0) {
		return false;
	}

	list.push_front(2.3);
	if (list.is_empty() || list.get_head()->get_value() != 2.3) {
		return false;
	}
	if (list.is_empty() || list.get_tail()->get_value() != 5.0) {
		return false;
	}

	list.push_back(3.7);
	list.push_front(4.2);

	if (list.is_empty() || list.get_head()->get_value() != 4.2) {
		return false;
	}
	if (list.is_empty() || list.get_tail()->get_value() != 3.7) {
		return false;
	}

	list.print_list();
	list.pop_front();
	list.pop_front();
	list.pop_front();
	list.pop_front();
	list.pop_front();
	list.print_list();

	list.push_back(6.66);

	if (list.is_empty() || list.get_head()->get_value() != 6.66) {
		return false;
	}
	if (list.is_empty() || list.get_tail()->get_value() != 6.66) {
		return false;
	}

	list.push_front(3.33);
	list.push_back(3.14);

	if (list.is_empty() || list.get_head()->get_value() != 3.33) {
		return false;
	}
	if (list.is_empty() || list.get_tail()->get_value() != 3.14) {
		return false;
	}

	list.print_list();

	list.pop_back();
	list.pop_back();
	list.pop_back();

	list.print_list();

	return true;
}
开发者ID:rkoch,项目名称:uzh-inf02b-a3,代码行数:65,代码来源:main.cpp

示例11: DoublyLinkedList

void TestDataStructures::DoubltLinkedListOperations(){
    DoublyLinkedList* list = new DoublyLinkedList();
    
    // Display
    list->Display();
    
    std::cout << "Insert at beginning.\n";
    // Insert at begining
    list->InsertAtBeginning(3);
    list->InsertAtBeginning(4);
    list->InsertAtBeginning(2);
    list->InsertAtBeginning(6);
    list->InsertAtBeginning(8);
    
    // Display
    list->Display();
    
    std::cout << "Insert at End.\n";
    // Insert at begining
    list->InsertAtEnd(33);
    list->InsertAtEnd(44);
    list->InsertAtEnd(22);
    list->InsertAtEnd(66);
    list->InsertAtEnd(88);
    
    // Display
    list->Display();
    
    //list = new DoublyLinkedList();
    
    std::cout << "Insert at Middle.\n";
    // Insert at begining
    
    list->InsertInMiddle(13);
    list->InsertInMiddle(84);
    list->InsertInMiddle(12);
    list->InsertInMiddle(6);
    list->InsertInMiddle(18);
    
    // Display
    list->Display();
}
开发者ID:SiddharthMishraPersonal,项目名称:DataStructures,代码行数:42,代码来源:TestDataStructures.cpp

示例12: main

int main()
{
	DoublyLinkedList *ls = new DoublyLinkedList();
	ls->push_back(*(new ListNode("100")));
	ListNode *n1 = new ListNode("5");
	ls->push_front(*n1);
	ls->push_front(*(new ListNode("1")));
	ls->push_front(*(new ListNode("3")));
	ls->push_front(*(new ListNode("4")));
	ls->push_front(*(new ListNode("0")));
	ls->push_back(*(new ListNode("1sdsd")));
	ls->print();
	cout << "\n";
	ls->print_bkw();
	cout << "\nLink list size is equal to " << ls->size() << endl;
	cout << "\n";
	cout << "Lets delete first and last nodes from list\n";
	ls->pop_back();
	ls->pop_front();
	ls->print();
	cout << "\nNow lets erase 4, 1 and 100: \n";
	ls->erase("4");
	ls->erase("1");
	ls->erase("100");
	ls->print();
	cout << "\nLets insert '6' after '3' and '7' after '5': \n";
	ls->insert_after("3", *(new ListNode("6")));
	ls->insert_after("5", *(new ListNode("7")));
	ls->print();
	cout << "\nLets clear linked list (check this with 'isEmpty' method): \n";
	ls->clear();
	if (ls->isEmpty())
		cout << "Our list is empty! \n";
	cout << "\nLets get new list: \n";
	ls->push_front(*(new ListNode("6")));
	ls->push_front(*(new ListNode("31")));
	ls->push_front(*(new ListNode("55")));
	ls->push_front(*(new ListNode("4")));
	ls->push_front(*(new ListNode("1")));
	ls->push_front(*(new ListNode("3")));
	ls->push_front(*(new ListNode("4")));
	ls->push_front(*(new ListNode("8"))); 
	ls->push_front(*(new ListNode("5")));
	ls->push_front(*(new ListNode("0")));
	ls->print();
	cout << "\nOur new sorted list: \n";
	ls->sort();
	ls->print();
	cout << "\nLets delete unique elements: \n";
	ls->unique();
	ls->print();
	cout << "\nLets insert '0', '2', '7' and '9' preserving list ordering: \n";
	ls->insert_ord(*(new ListNode("0")));
	ls->insert_ord(*(new ListNode("2")));
	ls->insert_ord(*(new ListNode("7")));
	ls->insert_ord(*(new ListNode("9")));
	ls->print();

	cout << "\nLets get new list 'temp_ls': \n";
	DoublyLinkedList *temp_ls = new DoublyLinkedList();
	temp_ls->push_front(*(new ListNode("b")));
	temp_ls->push_front(*(new ListNode("v")));
	temp_ls->push_front(*(new ListNode("a")));
	temp_ls->push_front(*(new ListNode("d")));
	temp_ls->print();
	cout << "\nLets 'merge' our lists (temp_ls in ls): \n";
	ls->merge(*temp_ls);
	ls->print();
	if (temp_ls->isEmpty())
		cout << "Our 'temp_ls' list is empty! \n";
	cout << "\nLets get new lists: \n";
	ls->clear();
	ls->push_front(*(new ListNode("6")));
	ls->push_front(*(new ListNode("3")));
	ls->push_front(*(new ListNode("5")));
	ls->push_front(*(new ListNode("4")));
	ls->push_front(*(new ListNode("1")));
	cout << "New 'ls': ";
	ls->print();
	temp_ls->push_front(*(new ListNode("b")));
	temp_ls->push_front(*(new ListNode("v")));
	temp_ls->push_front(*(new ListNode("a")));
	temp_ls->push_front(*(new ListNode("d")));
	cout << "New 'temp_ls': ";
	temp_ls->print();
	cout << "\nLets assign 'ls' to 'temp_ls' from 1 to 3: \n";
	ls->assign(*temp_ls, 1, 3);
	cout << "New 'ls': ";
	ls->print();
	cout << "New 'temp_ls': ";
	temp_ls->print();
	cout << "\nLets splice 'temp_ls' in 'ls' from index 3 with all list:\n ";
	ls->splice(3, *temp_ls);
	ls->print();
	ls->clear();
	temp_ls->clear();
	ls->push_front(*(new ListNode("6")));
	ls->push_front(*(new ListNode("3")));
	ls->push_front(*(new ListNode("5")));
	ls->push_front(*(new ListNode("4")));
//.........这里部分代码省略.........
开发者ID:Caparow,项目名称:CPP-tasks,代码行数:101,代码来源:TestAndDemonstration.cpp

示例13: main

int main(int argc, char *argv[])
{
	cout << "[+] doubly linked list test program" << endl;
	DoublyLinkedList<int> dlist;
	test<bool>(dlist.empty(), true, "empty test1");
	dlist.addFront(1);
	dlist.addFront(2);
	dlist.addBack(3);
	test<bool>(dlist.empty(), false, "empty test2");
	test<int>(dlist.front(), 2, "front test");
	test<int>(dlist.back(), 3, "back test");
	dlist.removeBack();
	test<int>(dlist.back(), 1, "remove test1");
	dlist.removeFront();
	test<int>(dlist.front(), 1, "remove test2");
	dlist.clear();
	test<bool>(dlist.empty(), true, "clear test");

	return EXIT_SUCCESS;
}
开发者ID:pyowonil,项目名称:tools,代码行数:20,代码来源:test_doubly_linked_list.cpp

示例14: new

net_protocol*
l2cap_init_protocol(net_socket* socket)
{
    L2capEndpoint* protocol = new(std::nothrow) L2capEndpoint(socket);
    if (protocol == NULL)
        return NULL;

    EndpointList.Add(protocol);
    debugf("Prococol created %p\n", protocol);

    return protocol;
}
开发者ID:mmadia,项目名称:haiku-1,代码行数:12,代码来源:l2cap.cpp

示例15: new

net_protocol*
l2cap_init_protocol(net_socket* socket)
{
	flowf("\n");

	L2capEndpoint* protocol = new(std::nothrow) L2capEndpoint(socket);
	if (protocol == NULL)
		return NULL;

	EndpointList.Add(protocol);

	return protocol;
}
开发者ID:mmanley,项目名称:Antares,代码行数:13,代码来源:l2cap.cpp


注:本文中的DoublyLinkedList类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。