求大神指点,error LNK2001,,找了好长时间了,也包含lib文件和<iostream.h>文件了,为什么还是不对呢
main.cpp
// queue.cpp: implementation of the queue class.
//
//////////////////////////////////////////////////////////////////////
#include "queue.h"
#include<stdlib.h>
#include<iostream.h>
#include<stdio.h>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
queue::queue()
{
dataLinkHead->next = NULL;
dataLinkTail->next = NULL;
count = 0;
}
queue::~queue()
{
if(count != 0)
{
QueueDataNode * p, *q;
p = dataLinkHead;
while(p != NULL)
{
q = p;
p = p->next;
delete q;
count--;
}
}
}
void queue::put(int newData)//在队尾加入一个新元素;
{
QueueDataNode *pNew = new QueueDataNode;//建立一个新节点
if(pNew == NULL)//判断是否申请到空间;
{
cout<<"Memory Insufficient!";
return ;
}
pNew->data = newData;//为新节点填充内容;
pNew->data = NULL;
//将结点插入到链表中;
if(dataLinkTail == NULL)//队列为空,新节点成为第一个节点
dataLinkHead = dataLinkTail = pNew;
else//队列不为空
{
dataLinkTail->next = pNew;
dataLinkHead = pNew;
}
count++;
}
int queue::get()//取出队头元素,并释放结点空间
{
if(count == 0)
cout<<"Queue empty!"<<endl;
else
{
cout<<"The queue head is "<<dataLinkHead->data<<endl;
QueueDataNode * p;
p = dataLinkHead;
dataLinkHead = p->next;
delete p;
}
count--;
if(count == 0)
dataLinkHead = dataLinkTail = NULL;
return 0;
}
int queue::getCount()//取出队列中元素的个数
{
return count;
}
bool queue::empty()//判断队列是否为空
{
return (count > 0 ? 0 : 1);
}
// queue.h: interface for the queue class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_QUEUE_H__BD15D2A1_86ED_40C5_AE89_C7564833B4E9__INCLUDED_)
#define AFX_QUEUE_H__BD15D2A1_86ED_40C5_AE89_C7564833B4E9__INCLUDED_
#include"iostream.h"
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}QueueDataNode;
typedef QueueDataNode * QueueData;
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class queue
{
public:
queue();
void put(int newData);
int get();
inline int getCount();
inline bool empty();
virtual ~queue();
private:
int count;
QueueDataNode * dataLinkHead;
QueueDataNode * dataLinkTail;
};
#endif // !defined(AFX_QUEUE_H__BD15D2A1_86ED_40C5_AE89_C7564833B4E9__INCLUDED_)
#include <iostream>
#include"queue.h"
#include<stdlib.h>
using namespace std;
int main(void)
{
queue q;
int i;
cout<<"Queue empty:";//输出队列是否为空;
if(q.empty())
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
cout<<endl<<"4 elements enter queue"<<endl;//依次往队列中放入4个数
for(i = 0; i < 4; i++)
q.put(i);
cout<<"Queue empty:";//输出队列是否为空
if(q.empty())
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
cout<<endl<<"2 elements leave queue:";//取出两个数
cout<<q.get()<<" ";
cout<<q.get()<<" ";
cout<<endl<<"2 elements enter queue"<<endl;//再放入两个数
q.put(4);
q.put(5);
cout<<"Elements left:";//按顺序输出剩下的队列成员;
int num = q.getCount();
for(i = 0; i < num; i++)
cout<<q.get()<<" ";
cout<<endl;
return 0;
}
#if !defined(AFX_QUEUE_H__BD15D2A1_86ED_40C5_AE89_C7564833B4E9__INCLUDED_)
#define AFX_QUEUE_H__BD15D2A1_86ED_40C5_AE89_C7564833B4E9__INCLUDED_
#include <iostream>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}QueueDataNode;
typedef QueueDataNode * QueueData;
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class queue
{
public:
queue();
void put(int newData);
int get();
inline int getCount();
inline bool empty();
virtual ~queue();
private:
int count;
QueueDataNode * dataLinkHead;
QueueDataNode * dataLinkTail;
};
/*
由于内联函数必须在调用它的每个文本文件中被定义,所以没有在类体中定义的内联成员函数必须被放在类定义出现的头文件中
*/
int queue::getCount()//取出队列中元素的个数
{
return count;
}
bool queue::empty()//判断队列是否为空
{
return (count > 0 ? 0 : 1);
}
#endif // !defined(AFX_QUEUE_H__BD15D2A1_86ED_40C5_AE89_C7564833B4E9__INCLUDED_)
// queue.cpp: implementation of the queue class.
//
//////////////////////////////////////////////////////////////////////
#include "queue.h"
#include<stdlib.h>
#include<stdio.h>
using namespace std;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
queue::queue()
{
dataLinkHead->next = NULL;
dataLinkTail->next = NULL;
count = 0;
}
queue::~queue()
{
if(count != 0)
{
QueueDataNode * p, *q;
p = dataLinkHead;
while(p != NULL)
{
q = p;
p = p->next;
delete q;
count--;
}
}
}
void queue::put(int newData) //在队尾加入一个新元素;
{
QueueDataNode *pNew = new QueueDataNode; //建立一个新节点
if(pNew == NULL) //判断是否申请到空间;
{
cout<<"Memory Insufficient!";
return ;
}
pNew->data = newData; //为新节点填充内容;
pNew->data = NULL;
//将结点插入到链表中;
if(dataLinkTail == NULL) //队列为空,新节点成为第一个节点
dataLinkHead = dataLinkTail = pNew;
else //队列不为空
{
dataLinkTail->next = pNew;
dataLinkHead = pNew;
}
count++;
}
int queue::get()//取出队头元素,并释放结点空间
{
if(count == 0)
cout<<"Queue empty!"<<endl;
else
{
cout<<"The queue head is "<<dataLinkHead->data<<endl;
QueueDataNode * p;
p = dataLinkHead;
dataLinkHead = p->next;
delete p;
}
count--;
if(count == 0)
dataLinkHead = dataLinkTail = NULL;
return 0;
}