1

有了这个主要:

void print_first(Queue q);

int main()
{
   Queue q1;
   Queue q2(4);
   q2.push(5);
   q2.push(3);
//   q2.print_list();
   for (int i = 0; i < 3; i++)
   {
      print_first(q2);
   }
   return 0;
}

void print_first(Queue q)
{
   if (!q.isEmpty())
   {
      cout << q.pop() << endl;
   }
   else
   {
       cout << "Nothing in queue" << endl;
   }
}

并且这些函数定义在一个类 Queue 中,它有一个链表,其中“head”和“tail”作为指向链表中第一个和最后一个节点的指针,每个节点都包含另一个结构“data”,它存储一个重新定义的类型 ElementType:

bool Queue::push(ElementType newElement)
{
   tail->next = new Node;
   if (tail->next == NULL)
   {
      return false;
   }
   tail->next->data.value = newElement;
   tail->next->next = NULL;
   tail = tail->next;
   return true;
}

ElementType Queue::pop()
{
   Node *newNode;
   ElementType returnData;
   returnData = head->data.value;
   newNode = head;
   head = head->next;
   delete newNode;
   return returnData;
}

bool Queue::isEmpty()
{
   if(head == NULL)
   {
       return true;
   }
   return false;
}

为什么我会收到此错误?4 装配线模拟器(9701)malloc:* 对象 0x1001000e0 的错误:未分配被释放的指针 *在 malloc_error_break 中设置断点以进行调试

4

1 回答 1

1

拥有您展示的代码,我认为问题在于您将队列的副本传递q给 function print_first

void print_first(Queue q)

如果您没有正确编写复制构造函数,则该函数可能会出现一些问题。

于 2013-10-14T21:43:21.983 回答