Beispiel #1
0
int main()
{
        LinkedListInit( & queueList );
        LinkedListInit( & stackList );
        AtomicListInit( & atomicList );
        HeapInit( & heap );
        int data;
        do
        {
                printf("enter a data value:\n0 to exit\n1 to remove a node\n2 to print the data structures\nor a larger number to add a node.\n");
                scanf("%d", &data );
                if( data == 0 )
                        return 0;
                else if( data == 1 )
                        Pop();
                else if( data == 2 )
                {
                        printf("queue:");
                        DumpList( & queueList );
                        printf("stack:");
                        DumpList( & stackList );
                        printf("Atomic:");
                        DumpAtomic( &atomicList );
                        DumpHeap( & heap );
                }
                else
                        Add(data);
        }while( data != 0 );
        return 0;
}
Beispiel #2
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;
}
Beispiel #3
0
void BURGERCALL StrParse(LinkedList_t *ListPtr,const char *Input)
{
	char WorkBuffer[256];		/* Work buffer */
	LinkedListInit(ListPtr);
	if (Input) {				/* Failsafe */
		for (;;) {
			Word Temp;
			Input = ParseBeyondWhiteSpace(Input);		/* Kill whitespace */
			Temp = ((Word8 *)Input)[0];					/* End of line? */
			if (!Temp || Temp==10 || Temp==13) {
				break;
			}
			if (Temp=='"') {				/* Quoted string? */
				Input = GetAParsedString((char *)Input,WorkBuffer,sizeof(WorkBuffer));
			} else {
				char *End;
				End = StrParseToDelimiter(Input);
				Temp = End-Input;
				if (Temp>=sizeof(WorkBuffer)) {
					Temp = sizeof(WorkBuffer)-1;
				}
				FastMemCpy(WorkBuffer,Input,Temp);
				WorkBuffer[Temp]=0;
				Input = End;			/* Accept the text */
			}
			if (((Word8 *)WorkBuffer)[0]) {		/* Anything here? */
				LinkedListAddNewEntryStringEnd(ListPtr,WorkBuffer);
			}
		}
	}
}
Beispiel #4
0
void WorkerCreateWorker(
                struct WORKER_QUEUE * queue,
                char * stack,
                unsigned int stackSize)
{
        LinkedListInit( &queue->List );

        SemaphoreInit( &queue->Lock, 0 );

        SchedulerCreateThread(
                        &queue->Thread,
                        10,
                        stack,
                        stackSize,
                        WorkerThreadMain,
                        queue,
                        TRUE);
}
Beispiel #5
0
//--------------------------------------------------------------------------------
DllExport int swLinkedListCreate(){      
static int linkListUID=0;
LinkList *pLinkList,*pLinkListEnd;
	LinkedListInit();
	pLinkList=(LinkList*)malloc(sizeof(LinkList)); //Allocation & Linking
	pLinkListEnd=linkListS.end;
	pLinkListEnd->next=pLinkList;
	pLinkList->prev=pLinkListEnd;
	linkListS.end=pLinkList;
	pLinkList->next=NULL;
	linkListS.size++;
    linkListUID++;

	pLinkList->id=linkListUID;
	pLinkList->size=0;
	pLinkList->nodeS.next=pLinkList->nodeS.prev=NULL;
	pLinkList->nodeS.end=&pLinkList->nodeS;
	return pLinkList->id;
}
Beispiel #6
0
void SemaphoreInit( struct SEMAPHORE * lock, COUNT count )
{
        LinkedListInit( & lock->WaitingThreads );
        lock->Count = count;
}