使用元音和辅音的矢量对链表进行排序

  • 本文关键字:链表 排序 c++ linked-list
  • 更新时间 :
  • 英文 :


我试图通过使用2个向量来存储和更新堆栈中的指针,将元音和辅音排列在链表中。然而,在下面的代码片段中没有一个cout在工作,我哪里出错了?甚至主要的cout都在安排函数调用之前,那也没有显示。

using namespace std;
bool r(char a,char b)
{
return a>b;
}
struct node{
char a;
struct node* next;
};
struct node* head;
void push(char data)
{
node* temp=new node;
temp->a=data;
if(head==NULL)
{
head=temp;
temp->next=NULL;
}
else
{
temp->next=head;
head=temp;
}
}
void arrange()
{
vector<node*> q1;
vector<node*> q2;
node* temp=head;
while(temp!=NULL)
{
if(temp->a=='a'||temp->a=='e')
q1.push_back(temp);
else
q2.push_back(temp);
temp=temp->next;
}

head=q1[0];
cout<<head->next->a<<q1.size();
for(int i=0;i<=q1.size();i++)
{
if(i==q1.size())
q1[i]->next=q2[0];
else
q1[i]->next=q1[i+1];
}
for(int i=0;i<=q2.size();i++)
{
if(i==q2.size())
q2[i]->next=NULL;
else
q2[i]->next=q2[i+1];
}
node* t=head;
while(t!=NULL)
{
cout<<t->a;
t=t->next;
}
}
int main() 
{ 

head=NULL;
push('a');
push('b');
push('c');
push('d');
push('e');
push('f');
node* temp=head;
while(temp!=NULL)
{
cout<<temp->a;
temp=temp->next;
}

arrange();
return 0; 
} 

只有当我删除排列函数中的for循环时,cout似乎工作得很好

测试if (cout)以查看您的cout是否有问题。如果出现问题,请向cerr报告。

首先,在arrange()之前,这段代码在我的笔记本电脑上运行良好,它卡住了一秒钟,然后坏了。

我没有仔细阅读代码,但我疯狂地猜测这是因为您试图访问nullptr

至于arrange()之前输出的不可见性,可能只是因为您没有使用std::cout << std::endl,它会刷新输出缓冲区,同时输出换行符。std::cout不会在std::cout之后立即输出字符,而是将输入放入内置缓冲区。当缓冲区充满时,它会输出所有内容,然后加载其余部分。

您可以参考此了解更多详细信息。(参见下面的段落示例(

通常情况下,当出现错误时,缓冲区也会刷新,这就是当前的情况,也让我有点困惑。

相关内容

  • 没有找到相关文章

最新更新