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;
	}
}
示例#2
0
StosList::~StosList()
{
	while(Is_Empty() == 0) 
	{
		this->Pop();
		}
		if(end==NULL) cout<<"\nUsunieto Stos\n";
}
示例#3
0
	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;
		}
	}
示例#4
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;
	}
}
示例#8
0
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 ;
}
示例#12
0
文件: fd_inst.c 项目: adinho/Testing
/*-------------------------------------------------------------------------*
 * 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;
}