Esempio n. 1
0
int main(){
    srand(time(NULL));

    struct linkedList * lldeque = malloc(sizeof(struct linkedList));

    LinkedListInit(lldeque);

    for(int i = 0; i < 100; i++)
    {
        int random = rand() % 4;
        int value = rand() % 100;
        switch(random)
        {
            case 0:
                printf("Added %d to the front of the deque.\n", value);
                LinkedListAddFront(lldeque, value);
                break;
            case 1:
                printf("Added %d to the back fo the deque.\n", value);
                LinkedListAddBack(lldeque, value);
                break;
            case 2:
                
                if(lldeque->size > 0)
                    {
                        printf("Removed %d from the front of the deque.\n",
                            LinkedListFront(lldeque));
                        LinkedListRemoveFront(lldeque);
                    }
                break;
            case 3:
                
                if(lldeque->size > 0)
                    {
                        printf("Removed %d from the back of the deque.\n",
                            LinkedListBack(lldeque));
                        LinkedListRemoveBack(lldeque);
                    }
                break;
            default:
                printf("nada\n");
        }

        PrintDeque(lldeque);

        if(LinkedListIsEmpty(lldeque) == 1)
        {
            printf("The deque is now empty.\n\n");
        }
        else
        {
            printf("There are %d elements left in the list.\n\n",
                lldeque->size);
        }
    }

    free(lldeque);
    
    return 0;
}
Esempio n. 2
0
void main(void)
{
	while(1)
	{
		char chc;
		printf("(1)Linked List, (2)Queue: ");
		scanf("%c", &chc);
		if(chc == '1')
		{

			LinkedListHeader list;

			LinkedListContruct(&list);

			bool quit = false;
			char keuze;

			while(1)
			{
				fflush(stdin);

				printf("1 = count, 2 = add front, 3 = add rear, 4 = find index, 5 = print all, 6 = quit: , 7 = Deep Copy");
				scanf("%c", &keuze);

				switch(keuze)
				{
				case '1':
					printf("%d", LinkedListCount(&list));
					break;
				case '2':
					{
					LinkedListNode *eerst = (LinkedListNode*)malloc(sizeof(LinkedListNode));
					printf("Waarde die je wilt invoegen: ");
					scanf("%d", &eerst->data);
					LinkedListAddFront(&list, eerst);
					}
					break;
				case '3':
					{
					LinkedListNode *laatst = (LinkedListNode*)malloc(sizeof(LinkedListNode));
					printf("Waarde die je wilt invoegen: ");
					scanf("%d", &laatst->data);
					LinkedListAddRear(&list, laatst);
					}
					break;
				case '4':
					{
						int index = 0;
						printf("index: ");
						scanf("%d", &index);
						LinkedListNode *node = LinkedListItem(&list, index);
						if(node != NULL)
							printf("Index %d heeft als waarde %d", index, node->data);
					}
					break;
				case '5':
					{
						int cnt = 1;
						while(1)
						{
							LinkedListNode *node = LinkedListItem(&list, cnt);
							if(node != NULL)
							{
								printf("Op index %d is het getal %d\n", cnt, node->data);
								cnt++;
							}
							else
								break;
						}
					}
					break;
				case '6':
					quit = true;
					break;
				case '7':
					{
						LinkedListHeader copiedHeader = {0};
						LinkedListContruct(&copiedHeader);
						LinkedListDeepCopy(&list, &copiedHeader);
						//Gekopieerd. _getch() wordt aangeroepen om te kijken of het ook werkt
						_getch();
					}
					break;
				default:
					break;
				}

				printf("\n");

				if(quit)
				{
					LinkedListDestruct(&list);
					break;
				}
			}
		}
		if(chc == '2')
		{
			QueueHeader header = {0};

			QueueInit(&header);

			bool quit = false;
			char keuze;

			while(1)
			{
				fflush(stdin);

				printf("1=enqueue, 2=dequeue, 3=peek, 4=isempty, 5=count,6=quit: ");
				scanf("%c", &keuze);

				switch(keuze)
				{
				case '1':
					{
						QueueNode *node = (QueueNode*)malloc(sizeof(QueueNode));
						int num = 0;
						printf("Getal om te queuen: ");
						scanf("%d", &num);
						node->number = num;
						QueueEnqueue(&header, node);
					}
					break;
				case '2':
					{
						QueueNode node = QueueDequeue(&header);
						if(!node.isEmpty)
							printf("Het volgende deel van de queue is %d" , node.number);
						else
							printf("De queue is leeg!");
					}
					break;
				case '3':
					{
						QueueNode node = QueuePeek(&header);
						if(!node.isEmpty)
							printf("Na het spieken blijkt dat het volgend nummer %d is" , node.number);
						else
							printf("de queue is leeg!");
					}
					break;
				case '4':
					if(QueueIsEmpty(&header))
						printf("ja");
					else
						printf("nee");
					break;
				case '5':
					{
						int num = 0;
						if(QueueCount(&header, &num))
							printf("Er staan %d nummers in de rij", num);
						else
							printf("Er staan geen nummers meer in de rij");
					}
					break;
				case '6':
					quit = true;
					break;
				default:
					break;
				}

				printf("\n");

				if(quit)
				{
					QueueDestruct(&header);
					break;
				}
			}
		}
	}
}