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;
} 展开
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;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询