Example #1
0
int main(int argc, char *argv[]) {
	/*
	printf("Argument count: %d\n", argc);
	for (int i = 0; i < argc; i++) {
		printf("Argument vector values:%s at %p memory\n", argv[i], argv[i]);
		for (char *j=argv[i]; *j!='\0'; j++) {
			printf("Another way to print argument vector values: "
                               "%c at %p memory\n", *j, j);
		}
	}
	*/

        //int num[MAX_LEN] = {1,2,3,4,5,6,7,8,9,10};
	char *str;

	enqueue("Dog1");
	enqueue("Cat1");
	enqueue("Cat2");
	enqueue("Dog2");
	enqueue("Cat3");
	enqueue("Dog4");
	enqueue("Cat4");
        iterateNodes(head);

	//printf("Dequeue any animal: %s\n",dequeueAny(str));
	printf("Dequeue any: %s\n",dequeueAny(str));
        iterateNodes(head);
	printf("Dequeue cat: %s\n",dequeueCat(str));
        iterateNodes(head);
	printf("Dequeue dog: %s\n",dequeueDog(str));
        iterateNodes(head);
	printf("Dequeue dog: %s\n",dequeueDog(str));
        iterateNodes(head);
	enqueue("Dog5");
        iterateNodes(head);
	printf("Dequeue any: %s\n",dequeueAny(str));
        iterateNodes(head);
	enqueue("Cat5");
        iterateNodes(head);
	printf("Dequeue cat: %s\n",dequeueCat(str));
        iterateNodes(head);

        printf("\nFreeing Linked List:\n");
        struct node *temp;
        while (head != NULL) {
                printf("Animal: %s, Address: %p, Next Address: %p\n",head->animal,head,head->next);
                temp = head;
                head = head->next;
                free(temp);
        }

	return 0;
}
Example #2
0
 Node * dequeueAny() {
     if (catQ.head && dogQ.head) {
         if (catQ.head->p.timeEntered < dogQ.head->p.timeEntered) {
             return dequeueCat();
         } else {
             return dequeueDog();
         }
     } else if (!catQ.head && !dogQ.head) {
         return nullptr;
     }
     if (catQ.head) { return dequeueCat(); }
     return dequeueDog();
 }