任意の長さの文字列のツリーを実装しようとしています。このコードは文字列 1、2、3、4 の長さで機能し
ますが、5 を超える長さでは機能しません。メイン ファイルはありますが、以下にエラーが表示されます。問題は、私が言おうとしているのは、なぜこのコードが長さ 4 の文字列まで機能するのかということですが、長さ 5 の文字列以上を入力すると、
出力の下にあるようなエラーが実際にスローされることです。
- 入れる
- 出口
選択肢を入力してください: 1
文字列を入力してください: 「std::out_of_range」のインスタンスをスローした後に呼び出される asdfg 終了 what(): basic_string::at
RUN FAILED (終了値 1、合計時間: 1 秒)
struct node
{
string info;
struct node *next[];
}*front,*rear;
void enqueue(string s)
{
node *p,*temp;
p=new node[sizeof(node)];
p->next[n.length()];
p->info=s;
cout<<" pe "<<p->info;
for (int i=0;i<n.length();i++)
{
p->next[i] = new node;
p->next[i]=NULL;
}
if(front==NULL)
{
front=p;
rear=p;
}
else
{
cout<<"cl"<<cl<<endl;
if(cl<n.length())
{
rear->next[cl]=p;
temp=rear->next[cl];
cout<<"chile-info "<<temp->info<<endl;
}
}
}
void display()
{
int k=0;
node *t, *temp;
t=front;
if(front==NULL||rear==NULL)
{
cout<<"\nQueue Empty!!!";
}
else
{
temp=t;
while(t!= NULL)
{
if(t->next[k] !=NULL)
{
temp=t->next[k];
cout<<temp->info<<" ";
}
k++;
if(k==n.length())
{
k=0;
t= t->next[k];
temp=t;
}
}
}
}
int main(int argc, char** argv) {
int ch,len,x;
string string1;
rear=NULL;
front=NULL;
cout<<"\n1. Insert\n2. Exit\n";
cout<<"\nEnter Your Choice: ";
cin>>ch;
switch(ch)
{
case 1:
cout<<"\nEnter The String: ";
cin>>n;
len=n.length();
enqueue(n);
cout<<" len "<<len;
for(int p=1;p<=len;p++)
bnod+=pow(len,p);
cl=0;
for (x=0;x<len;x++)
{
string1=n.at(x);
enqueue(string1);
cl++;
}
display();
cout<<"\n########################\n";
break;
case 2:
exit(0);
break;
default:
cout<<"\nWrong Choice!!! Try Again.";
}
return 0;
}