你好我写了下面的程序(带有链表的队列),但我有一个错误,我无法弄清楚如何修复它如果你帮我解决它会很高兴。
这是我的问题的代码,我得到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;
}
}
答案 0 :(得分:1)
您有rear
和front
指针的两个声明
一个在queue.h中,另一个在main
中从主
中删除rear
和front
指针
int main()
{
//Node *rear;
//Node *front;
.....
}
在queue.h中有extern Node *rear, *front;
并在queue.cpp
Node *rear, *front;