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; }
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; }
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); } } } }
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); }
//-------------------------------------------------------------------------------- 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; }
void SemaphoreInit( struct SEMAPHORE * lock, COUNT count ) { LinkedListInit( & lock->WaitingThreads ); lock->Count = count; }