STL中queue

可不可以这样structnode{............};queue<node>q;能这样使用吗,不能的话怎么办难道自己编写个队列?我想实现二叉树左右子树交换,您看看... 可不可以这样
struct node{
............
};
queue<node> q;

能这样使用吗,不能的话怎么办难道自己编写个队列?
我想实现二叉树左右子树交换,您看看这样行吗,运行为什么access violation
#include "stdafx.h"
#include "iostream"
#include "queue"
using namespace std;

typedef struct node{
int data;
struct node *lchild,*rchild;
}btreenode,*btree;

btree creatbtree(btree &t){
int c;
cin >> c;
if (c!=-1) {
t=NULL;
}
else{
t=new node;
t->data=c;
t->lchild=creatbtree(t->lchild);
t->rchild=creatbtree(t->rchild);
}
return t;
}

void exchangelrchild(btree t){
queue<btree> q;
btree p,r;
q.push(t);
while (!q.empty()){
p=q.front();
q.pop();
if (p->lchild!=NULL) {
q.push(p->lchild);
}
if (p->rchild!=NULL
) {
q.push(p->rchild);
}

r=p->lchild;
p->lchild=p->rchild;
p->rchild=r;
}

}

int main(int argc, char* argv[])
{ btree t;
int c;
cin >> c;
t=creatbtree(t);
exchangelrchild(t);
return 0;
}
展开
 我来答
chiconysun
2011-03-24 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2605万
展开全部
可以的,本来就是这样实例化的,不过你的node类型如果有动态分配元素,一定要有复制构造函数和析构函数,并重载赋值运算符,不然运行起来就有错误的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式