質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1054閲覧

C++ キュー(幅優先)で質問があります。

P_Beginner

総合スコア99

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/12/04 08:28

キュー、幅優先をプログラムで書いているのですが、左右に子ノードがあった場合の処理がわかりません。
//■■■■■■■■キューに子ノードがあれば入れる処理を追加する
の部分です。

if(q1.front()->l_child!=NULL)
q1.push_back(&Node[0]);
if(q1.front()data->r_child!=NULL)
q1.push_back(&Node[0]);

と追加してみたのですが、
queue.cpp:66:2: error: use of undeclared identifier
'q1'
q1.push_back(&Node[0]);
^
queue.cpp:69:9: error: use of undeclared identifier
'q1'
while(!q1.empty()) //キューが空ではない
^
queue.cpp:72:9: error: use of undeclared identifier
'q1'
pnode=q1.front();
^
queue.cpp:74:3: error: use of undeclared identifier
'q1'
q1.pop.front();
^
queue.cpp:76:6: error: use of undeclared identifier
'q1'
if(q1.front()->l_child!=NULL)
^
queue.cpp:77:4: error: use of undeclared identifier
'q1'
q1.push_back(&Node[0]);
^
queue.cpp:78:6: error: use of undeclared identifier
'q1'
if(q1.front()data->r_child!=NULL)
^
queue.cpp:79:4: error: use of undeclared identifier
'q1'
q1.push_back(&Node[0]);
^

とエラーが出てしまいます(MacBook Pro,ターミナルで実行)。
左子ノード、右子ノードがそれぞれある場合をif文で考えるものだと思ったのですが、これではいけないのでしょうか?

/プログラム/
#include<iostream>
#include<deque>
#include<cstring>
using namespace std;

struct node{ //ノードを表す構造体
struct node *l_child; //左子ノード
struct node *r_child; //右子ノード
char data; //文字
};

struct queue{
struct queue *next;
struct node *n;
};

int main()
{
struct node Node[11];

//木の初期設定 Node[0].l_child=&Node[1]; Node[0].r_child=&Node[5]; Node[0].data='P'; Node[1].l_child=&Node[2]; Node[1].r_child=NULL; Node[1].data='M'; Node[2].l_child=&Node[3]; Node[2].r_child=&Node[4]; Node[2].data='S'; Node[3].l_child=NULL; Node[3].r_child=NULL; Node[3].data='A'; Node[4].l_child=NULL; Node[4].r_child=NULL; Node[4].data='A'; Node[5].l_child=NULL; Node[5].r_child=&Node[6]; Node[5].data='L'; Node[6].l_child=NULL; Node[6].r_child=&Node[7]; Node[6].data='E'; Node[7].l_child=&Node[8]; Node[7].r_child=&Node[9]; Node[7].data='R'; Node[8].l_child=NULL; Node[8].r_child=NULL; Node[8].data='T'; Node[9].l_child=&Node[10]; Node[9].r_child=NULL; Node[9].data='E'; Node[10].l_child=NULL; Node[10].r_child=NULL; Node[10].data='E'; q1.push_back(&Node[0]); //木の幅優先探索(キューを利用) while(!q1.empty()) //キューが空ではない { struct node *pnode; pnode=q1.front(); cout << pnode->data << "\n"; q1.pop.front(); //■■■■■■■■キューに子ノードがあれば入れる処理を追加する } return 0;

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

q1の宣言が無いのが原因です。
エラーメッセージをよく見ましょう。

queue.cpp:66:2: error: use of undeclared identifier 'q1'

「宣言されていない'q1'が使われている」

と書いてあるじゃないですか。

投稿2017/12/04 08:41

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問