你好,我写了下面的程序(带linkedlist的队列),但我有一个错误,我不知道如何修复它,如果你帮我修复它,我会很高兴。
这是我的问题代码,我得到3个错误:
错误1错误LNK2005:"struct Node*rear"(?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;
}
}
您有两个声明rear
和front
指针
一个在队列.h中,另一个在主中
从主中删除rear
和front
指针
int main()
{
//Node *rear;
//Node *front;
.....
}
在queue.h中有extern Node *rear, *front;
,并在queue.cpp 中定义
Node *rear, *front;