链接列表与队列LNK2005错误

时间:2014-10-26 17:13:26

标签: c++ linked-list queue

你好我写了下面的程序(带有链表的队列),但我有一个错误,我无法弄清楚如何修复它如果你帮我解决它会很高兴。

这是我的问题的代码,我得到3个错误:

  

错误1错误LNK2005:" struct Node * rear" (?后面@@ 3PAUNode @@ A)已经在main.obj中定义了   错误2错误LNK2005:" struct Node * front" (?front @@ 3PAUNode @@ A)已在main.obj中定义   错误3错误LNK1169:找到一个或多个多重定义的符号

代码 -

queue.h

#ifndef _MYQUEUE_H
#define _MYQUEUE_H
#include <iostream>

struct Node
{
    int data;
    Node* next;
} *rear, *front;


void enqueue(int element);
void dequeue();

#endif

#include <iostream>
#include "myQueue.h"

int main()
{
    Node *rear;
    Node *front;

    enqueue(7);
    enqueue(4);
    enqueue(9);

    dequeue();
    dequeue();
    dequeue();

    system("pause");

    return 0;
}

queue.cpp

#include "myQueue.h"

void enqueue(int element)
{
    Node* temp = new Node;
    temp->data = element;
    temp->next = NULL;

    if (front == NULL)
    {
        front = temp;
    }
    else
    {
        rear->next = temp;
    }
    rear = temp;
}

void dequeue()
{
    Node* temp = new Node;
    if (front == NULL)
    {
        std::cout << "No elements" << std::endl;
    }
    else
    {
        temp = front;
        front = front->next;
        std::cout << temp << std::endl;
        delete temp;
    }
}

1 个答案:

答案 0 :(得分:1)

您有rearfront指针的两个声明

一个在queue.h中,另一个在main

从主

中删除rearfront指针
int main()
{
   //Node *rear;
   //Node *front;
   .....
}

在queue.h中有extern Node *rear, *front;并在queue.cpp

中定义它们
Node *rear, *front;