我正在尝试实现任何长度的字符串树。此代码适用于字符串 1、2、3、4 的长度,但不适用于 5 以上。
我有一个主文件,但它在下面显示错误。问题是我想说的是为什么这段代码适用于长度为 4 的字符串,但是当我输入长度为 5 或以上的字符串时,它真的会抛出一个错误,就像在
OUTPUT下一样
- 插入
- 出口
输入您的选择:1
输入字符串:在抛出 'std::out_of_range' 实例后调用 asdfg 终止 what(): basic_string::at
RUN FAILED(退出值1,总时间:1s)
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;
}