C++ 使用链表的动态队列//总线错误:10(C+;+;)

C++ 使用链表的动态队列//总线错误:10(C+;+;),c++,debugging,linked-list,queue,bus,C++,Debugging,Linked List,Queue,Bus,嗨,我正在实现一个基于基本链表的动态队列类,当运行测试时,我得到“总线错误:10”。我是新使用终端(MacOSX)的,我想得到一些帮助,找出我的代码有什么问题,或者我试图运行它的方式。它编译得很好 代码链接: 测试代码: // // Test Program 1 for Dynamic Int Queue Class // #include <iostream> // for I/O facilities #include "queue.h" // basic_int_q

嗨,我正在实现一个基于基本链表的动态队列类,当运行测试时,我得到“总线错误:10”。我是新使用终端(MacOSX)的,我想得到一些帮助,找出我的代码有什么问题,或者我试图运行它的方式。它编译得很好

代码链接:

测试代码:

//
//  Test Program 1 for Dynamic Int Queue Class
//
#include <iostream>   // for I/O facilities
#include "queue.h" //  basic_int_queue declarations
using namespace std;

int main (int argc, char * const argv[]) {

   bool OK = true ;
   Queue q1 ;
   if( ! q1.empty() ) OK = false ;
   q1.enqueue(1);
   if( q1.empty() ) OK = false ;
   q1.enqueue(2);
   q1.enqueue(3);
   q1.enqueue(4);
   if( q1.front() != 1 )  OK = false ;
   q1.dequeue();
   q1.dequeue();
   q1.dequeue();
   if( q1.front() != 4 )  OK = false ;
   if( q1.dequeue() != 4 ) OK = false ;
   if( ! q1.empty() ) OK = false ;

   if( OK ){
      cout << "GOOD" << endl ;
      return 0 ;
   }else{
      cout << "BAD" << endl ;
      return -1 ;
   }
}
//
//动态Int队列类的测试程序1
//
#包括//用于I/O设施
#包括“queue.h”//basic\u int\u队列声明
使用名称空间std;
int main(int argc,char*const argv[]{
bool OK=true;
队列q1;
如果(!q1.empty())OK=false;
q1.排队(1);
如果(q1.empty())OK=false;
q1.排队(2);
q1.排队(3);
q1.排队(4);
如果(q1.front()!=1)OK=false;
q1.出列();
q1.出列();
q1.出列();
如果(q1.front()!=4)OK=false;
如果(q1.dequeue()!=4)OK=false;
如果(!q1.empty())OK=false;
如果(确定){

cout在您的
queue.cpp
文件
enqueue
实现中,您需要使用
new
在堆上分配一个新节点。例如,更改
enqueue
中的以下行

node * temp;
temp->next = NULL;
temp->data = item;

将消除总线错误

另外,在
出列
实现结束时,您需要

delete temp;

以前

退货项目;

否则,
delete temp;
行将无法访问,并且您将有内存泄漏

最后一件事,通常你应该

#包括“queue.h”


在您的代码> Queal.CPP。不可以。

您可以考虑用编译器选项<代码> -g>代码来构建程序,以生成调试信息,然后通过调试器运行程序,如<代码> gdB <代码>。它应该告诉您您的总线错误在哪里。您的帮助是有用的,但现在我得到了:体系结构x86_64的ned符号:“_main”,引用自:未找到体系结构x86_64的主可执行文件ld的隐式入口/启动:未找到符号clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)这意味着什么?看起来您只是试图使用
queue.cpp
编译一个可执行文件。您还需要在compile命令中包含test cpp文件(包含您在原始帖子中粘贴的代码的文件)。例如
g++queue.cpp test.cpp
node * temp = new node(item, NULL);