void processQueue::Dequeue() { if(!Is_Empty()&&front==back) { delete front; front = 0; back = 0; } else if(!Is_Empty()) { node * p = front; front = p->prev; front->next = 0; delete p; } }
StosList::~StosList() { while(Is_Empty() == 0) { this->Pop(); } if(end==NULL) cout<<"\nUsunieto Stos\n"; }
void CMPage::Clear(void) { if (!Is_Empty()) { m_freeblock_num = m_allblock_num; assert(isaligned(m_block, m_align_size) && "memory not aligned"); m_freeblock_head = (FreeBlock*)m_block; m_freeblock_head->next = 0; } }
void StosList::Pop() { if(Is_Empty() != 0) {cout << "\nStos pusty!!!!\n" << endl << endl; } else { Element *tmp = end->prev; end=NULL; delete end; end = tmp; } }
//Function to free memory used for linked-list void Clear_Memory(void) { struct node* current; struct node* next; if (Is_Empty()) return; current = head; next = current->next; while (next != NULL) { free(current); current = next; next = current->next; } free(current); }
/***清空链栈***/ void Clear_Stack(PStack P) { if(Is_Empty(P)) printf("The stack had enpty.\n"); PNode PCurrent=P->top; int i=P->size; while(i--) { P->top=PCurrent->next; P->size--; free(PCurrent); PCurrent=P->top; } }
void processQueue::Enqueue(node & newProcess) { node * p = new node; *p=newProcess; if(Is_Empty()) { front=p; back=p; p->next=0; p->prev=0; } else { node * bf; node * bb; bf=front; bb=front; while(bb!=0) { if(p->cpuBurstList[p->cpuBurstNumber]<bb->cpuBurstList[bb->cpuBurstNumber]&&bb==front) { bb->next= p->prev=bb; p->next=0; front=p; return; } else if(p->cpuBurstList[p->cpuBurstNumber]<bb->cpuBurstList[bb->cpuBurstNumber]) { bb->next=p; bf->prev=p; p->prev=bb;//add equal process time case to all cases middle front back p->next=bf; return; } else { bf=bb; bb=bb->prev; } } back=p; p->prev=0; p->next=bf; bf->prev=p; } }
void StosList::Wypisz() { if(Is_Empty() != 0) {cout << "\nStos pusty!!!!\n" << endl;} else { Element *tmp; tmp = end; cout << "\n---------- Stos: ----------\n"; while(end != NULL) { cout << end->value << endl; end = end -> prev; } end = tmp; } }
//Add void MyQueue::AddQ(struct TreeNode *newdata) { struct QueueNode *newnode ; newnode = (struct QueueNode*)malloc(sizeof(struct QueueNode)) ; newnode->Data = newdata ; newnode->next = NULL ; if(Is_Empty()) { front = newnode ; rear = newnode ; } else { rear->next = newnode ; rear = newnode ; } }
void processQueue::Print() { cout<<"Ready Queue: Process Burst"<<endl; if(!Is_Empty()) { node * p = front; while(p!=0) { cout<<" "<<p->name<<" "<<p->cpuBurstList[p->cpuBurstNumber]<<endl; p=p->prev; } } else { cout<<" [Empty]"<<endl; } }
//Delete struct TreeNode* MyQueue::DelQ() { struct TreeNode *retvalue ; struct QueueNode *temp ; if(Is_Empty()) { printf("Queue is empty!!!!\n") ; retvalue = NULL ; } else { retvalue = front->Data ; temp = front ; front = front->next ; free(temp) ; } return retvalue ; }
/*-------------------------------------------------------------------------* * PL_FD_TELL_RANGE_RANGE * * * *-------------------------------------------------------------------------*/ Bool Pl_Fd_Tell_Range_Range(WamWord *fdv_adr, Range *range) { int nb_elem; int propag; WamWord *save_CS = CS; if (range->vec) CS = (WamWord *) range->vec; CS += pl_vec_size; Pl_Range_Inter(range, Range(fdv_adr)); CS = save_CS; if (Is_Empty(range)) { if (range->extra_cstr) Pl_Fd_Display_Extra_Cstr(fdv_adr); return FALSE; } if (range->min == range->max) { if (range->extra_cstr) Pl_Fd_Display_Extra_Cstr(fdv_adr); Update_Range_From_Int(fdv_adr, range->min, propag); } else { nb_elem = Pl_Range_Nb_Elem(range); Update_Range_From_Range(fdv_adr, nb_elem, range, propag); } if (propag) All_Propagations(fdv_adr, propag); return TRUE; }
/***返回栈顶数据项***/ Item Get_Item_Stack(PStack P) { if((NULL != P->top->data) && Is_Empty(P)==0) return P->top->data; }