C++的队列
//定义link.h的头文件,如下。typedefstructnode{intdata;structnode*next;}listdatanode;//定义链表类型typ...
//定义link.h的头文件,如下。
typedef struct node{
int data;
struct node *next;
} listdatanode;
//定义链表类型
typedef listdatanode * listdata;
class linklist
{protected:
int count; //列表中元素的个数
listdata datalinkhead, datalinktail;//表头、表尾指针
public:
linklist(void); //构造函数
virtual ~linklist(void); //析构函数
void puttail (int newdata); //在表尾加入一个新元素
void puthead (int newdata); //在表头插入一个新元素
int gethead (void); //从表头取出一个元素
int peekhead(void) ;//查看表头元素的值,假定列表至少有一个元素
bool empty ( ); //检查列表是否空
int getelemcount() ; //取列表元素个数
static int getListNumber(); //取列表个数
};
class queue:public linklist
{ public:
queue():linklist(){}
void enqueue(int newdata){puttail(newdata);}
};
//下面是主函数
#include "link.h"
#include "iostream"
using namespace std;
linklist::linklist()
{count=0;
datalinkhead=NULL;
datalinktail=NULL;
}
linklist::~linklist()
{}
void linklist::puttail(int newdata)
{count=count+1;
listdatanode *p=new listdatanode;
p->data=newdata;
p->next=NULL;
if(datalinktail==NULL)
{datalinkhead=datalinktail=p;
}
else
{datalinktail->next =p;
datalinktail=p;
}
}
int linklist::gethead(void)
{listdatanode *p;
int a;
p=datalinkhead;
datalinkhead=datalinkhead->next ;
a=p->data;
delete p;
count--;
return a;
}
int main(int argc, char* argv[])
{ int i;
queue *q1=new queue;
for(i=0;i<4;i++)
{q1->enqueue(i);}
for(i=0;i<4;i++)
{cout<<q1->gethead()<<endl;}
}
请问我哪错了,真的感谢。 展开
typedef struct node{
int data;
struct node *next;
} listdatanode;
//定义链表类型
typedef listdatanode * listdata;
class linklist
{protected:
int count; //列表中元素的个数
listdata datalinkhead, datalinktail;//表头、表尾指针
public:
linklist(void); //构造函数
virtual ~linklist(void); //析构函数
void puttail (int newdata); //在表尾加入一个新元素
void puthead (int newdata); //在表头插入一个新元素
int gethead (void); //从表头取出一个元素
int peekhead(void) ;//查看表头元素的值,假定列表至少有一个元素
bool empty ( ); //检查列表是否空
int getelemcount() ; //取列表元素个数
static int getListNumber(); //取列表个数
};
class queue:public linklist
{ public:
queue():linklist(){}
void enqueue(int newdata){puttail(newdata);}
};
//下面是主函数
#include "link.h"
#include "iostream"
using namespace std;
linklist::linklist()
{count=0;
datalinkhead=NULL;
datalinktail=NULL;
}
linklist::~linklist()
{}
void linklist::puttail(int newdata)
{count=count+1;
listdatanode *p=new listdatanode;
p->data=newdata;
p->next=NULL;
if(datalinktail==NULL)
{datalinkhead=datalinktail=p;
}
else
{datalinktail->next =p;
datalinktail=p;
}
}
int linklist::gethead(void)
{listdatanode *p;
int a;
p=datalinkhead;
datalinkhead=datalinkhead->next ;
a=p->data;
delete p;
count--;
return a;
}
int main(int argc, char* argv[])
{ int i;
queue *q1=new queue;
for(i=0;i<4;i++)
{q1->enqueue(i);}
for(i=0;i<4;i++)
{cout<<q1->gethead()<<endl;}
}
请问我哪错了,真的感谢。 展开
2个回答
展开全部
#include <iostream>
using namespace std;
typedef struct node{
int data;
struct node *next;
} listdatanode;
//定义链表类型
typedef listdatanode * listdata;
class linklist
{protected:
int count; //列表中元素的个数
listdata datalinkhead, datalinktail;//表头、表尾指针
public:
linklist(void); //构造函数
virtual ~linklist(void); //析构函数
void puttail (int newdata); //在表尾加入一个新元素
void puthead (int newdata); //在表头插入一个新元素
int gethead (void); //从表头取出一个元素
int peekhead(void) ;//查看表头元素的值,假定列表至少有一个元素
bool empty ( ); //检查列表是否空
int getelemcount() ; //取列表元素个数
static int getListNumber(); //取列表个数
};
class queue:public linklist
{ public:
queue():linklist(){}
void enqueue(int newdata){puttail(newdata);}
};
//下面是主函数
linklist::linklist()
{count=0;
datalinkhead=NULL;
datalinktail=NULL;
}
linklist::~linklist()
{}
void linklist::puttail(int newdata)
{count=count+1;
listdatanode *p=new listdatanode;
p->data=newdata;
p->next=NULL;
if(datalinktail==NULL)
{datalinkhead=datalinktail=p;
}
else
{datalinktail->next =p;
datalinktail=p;
}
}
int linklist::gethead(void)
{listdatanode *p;
int a;
p=datalinkhead;
datalinkhead=datalinkhead->next ;
a=p->data;
delete p;
count--;
return a;
}
int main(int argc, char* argv[])
{ int i;
queue *q1=new queue;
for(i=0;i<4;i++)
{q1->enqueue(i);}
for(i=0;i<4;i++)
{cout<<q1->gethead()<<endl;}
}
这样就可以编译执行了。功能有按照你的预期实现偶就不知了~
using namespace std;
typedef struct node{
int data;
struct node *next;
} listdatanode;
//定义链表类型
typedef listdatanode * listdata;
class linklist
{protected:
int count; //列表中元素的个数
listdata datalinkhead, datalinktail;//表头、表尾指针
public:
linklist(void); //构造函数
virtual ~linklist(void); //析构函数
void puttail (int newdata); //在表尾加入一个新元素
void puthead (int newdata); //在表头插入一个新元素
int gethead (void); //从表头取出一个元素
int peekhead(void) ;//查看表头元素的值,假定列表至少有一个元素
bool empty ( ); //检查列表是否空
int getelemcount() ; //取列表元素个数
static int getListNumber(); //取列表个数
};
class queue:public linklist
{ public:
queue():linklist(){}
void enqueue(int newdata){puttail(newdata);}
};
//下面是主函数
linklist::linklist()
{count=0;
datalinkhead=NULL;
datalinktail=NULL;
}
linklist::~linklist()
{}
void linklist::puttail(int newdata)
{count=count+1;
listdatanode *p=new listdatanode;
p->data=newdata;
p->next=NULL;
if(datalinktail==NULL)
{datalinkhead=datalinktail=p;
}
else
{datalinktail->next =p;
datalinktail=p;
}
}
int linklist::gethead(void)
{listdatanode *p;
int a;
p=datalinkhead;
datalinkhead=datalinkhead->next ;
a=p->data;
delete p;
count--;
return a;
}
int main(int argc, char* argv[])
{ int i;
queue *q1=new queue;
for(i=0;i<4;i++)
{q1->enqueue(i);}
for(i=0;i<4;i++)
{cout<<q1->gethead()<<endl;}
}
这样就可以编译执行了。功能有按照你的预期实现偶就不知了~
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道你这到底是队列啊还是链表,或者是链表队列?今天太晚了,没心情看了,明天有时间再看看吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询