ผลต่างระหว่างรุ่นของ "Algo lab/stack queue codes"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 52: แถว 52:
 
}
 
}
  
bool is_empty()
+
bool is_queue_empty()
 
{
 
{
 
   return (front == 0);
 
   return (front == 0);

รุ่นแก้ไขเมื่อ 02:39, 17 กันยายน 2563

Queue

typedef int ValueT;

struct ListNode {
  ValueT val;
  ListNode* next;

  ListNode(ValueT val, ListNode* next=0)
    : val(val), next(next) {}
};

ListNode* front;
ListNode* rear;

void init_queue()
{
  front = rear = 0;
}

void insert_queue(ValueT v)
{
  ListNode* new_node = new ListNode(v);

  if(rear != 0) {
    rear->next = new_node;
    rear = new_node;
  } else {
    front = rear = new_node;
  }
}

ValueT extract_queue()
{
  if(front != 0) {
    ValueT v = front->val;

    ListNode* new_front = front->next;
    delete front;
    front = new_front;

    if(front == 0) {
      rear = 0;
    }
    
    return v;
  } else {
    throw "Error extract from empty queue";
  }
}

bool is_queue_empty()
{
  return (front == 0);
}