Beispiel #1
0
int main(void)
{
    Queue *pQ = NULL;
    QueueNode *pNode = NULL;
    char *pStr = NULL;

    pQ = initQueue();

    pStr = getData();
    pNode = makeNode(pStr);
    enqueue(&pQ, pNode);

    pStr = getData();
    pNode = makeNode(pStr);
    enqueue(&pQ, pNode);

    pStr = getData();
    pNode = makeNode(pStr);
    enqueue(&pQ, pNode);
    //Print current queue
    printQueueRecursive(pQ->pHead);
    printf("\n");
    system("pause");

    //dequeue
    pStr = dequeue(&pQ);
    pStr = dequeue(&pQ);
    pStr = dequeue(&pQ);
    printQueueRecursive(pQ->pHead);
    printf("\n");
    system("pause");

    //add to queue
    pStr = getData();
    pNode = makeNode(pStr);
    enqueue(&pQ, pNode);

    pStr = getData();
    pNode = makeNode(pStr);
    enqueue(&pQ, pNode);

    printQueueRecursive(pQ->pHead);

    return 0;
}
Beispiel #2
0
/**************************************************************************************************
* Function Name: standardLaneQueue																  *
* Date Created: 2/18/12																			  *
* Date Last Modified:2/18/12																	  *
* Description: function simiulates queue based on standard lane random numbers. It prints the	  *
*			   queue after each new node or loss of node.										  *
* Input Parameters: pointer to queue, simulated time scale by user in min					      *
* Returns: NONE																					  *
* Preconditions: address to queue is passed in along with user time								  *
* Post Conditions: queue is added to and subtracted from until user time is reached				  *
* Test Conditions: NOT TESTED																	  *
**************************************************************************************************/
void standardLaneQueue(Queue *pQueue, int userTime)
{
	int randArrivalTime = 0, serviceTime= 0, totalTime = 0;
	int timePassed = 0, custNum = 0, addCount = 0; //addcount = 0 is FALSE
	QueueNode data = {0, 0, 0, NULL};
	
	
	while (timePassed <= userTime) 
	{
		addCount = 0; //Reset each add
		randArrivalTime = (rand() % (STD_MAX - STD_MIN + 1) + STD_MIN);
		timePassed = randArrivalTime + timePassed; //Keeps track of customer number based on available service time.
		custNum ++;
		serviceTime = (rand() % (STD_SRV_MAX - STD_SRV_MIN + 1) + STD_SRV_MIN);
		totalTime = serviceTime + totalTime;

		data.customerNumber = custNum;
		data.serviceTime = serviceTime;
		data.totalTime = totalTime;
		
		 if(!isEmpty(*pQueue))
		 {
				
			if (pQueue->pHead->serviceTime > randArrivalTime) //Person in front not standing long enough to leave yet
			{
				enqueue(pQueue, data);
				addCount = 1; //Node was added
				pQueue->pHead->serviceTime = pQueue->pHead->serviceTime - randArrivalTime; //denotes time passed while being serviced but not done
			}
			else //Person in front serviced before next addition
			{
				while (pQueue->pHead != NULL && pQueue->pHead->serviceTime <= randArrivalTime) //Keep servicing guy in front till new guy arrives
				{
					randArrivalTime = randArrivalTime - (pQueue->pHead->serviceTime); //Time less guy already served
					dequeue(pQueue);
				}
			}

			if (addCount != 1) //No Node added so add next guy
			{
				enqueue(pQueue, data);
			}
		 }
		 else
		 {
			enqueue(pQueue, data);
		 }
		printQueueRecursive(*pQueue);		
		system("PAUSE");
		system("cls");
	}


	
}
Beispiel #3
0
/**************************************************************************************************
* Function Name: printQueueRecursive															  *
* Date Created: 2/16/12																			  *
* Date Last Modified:2/16/12																	  *
* Description: function prints queue														      *
* Input Parameters: queue																	      *
* Returns: NONE																					  *
* Preconditions: queue is passed in																  *
* Post Conditions: queue is printed in order													  *
* Test Conditions: NOT TESTED																	  *
**************************************************************************************************/
void printQueueRecursive(Queue queue)
{

	if (!isEmpty(queue))
	{
		printf("Customer: %d \n", (queue.pHead)->customerNumber);
		printf("ServiceTimeLeft: %d min \n", (queue.pHead) ->serviceTime);
		printf("TotalTime so far: %d min\n", (queue.pHead) ->totalTime);
		queue.pHead = queue.pHead ->pNext;
		printQueueRecursive(queue);
	}

}