首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用矢量对元音和辅音进行链表排序

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

Stack Overflow用户
提问于 2020-09-13 15:51:43
回答 2查看 58关注 0票数 1

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

代码语言:javascript
复制
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; 
} 

只有当我删除arrange函数中的for循环时,cout才能正常工作

EN

回答 2

Stack Overflow用户

发布于 2020-09-13 16:05:58

测试if (cout),看看您的cout是否有问题。如果有问题,请报告给cerr

票数 0
EN

Stack Overflow用户

发布于 2020-09-13 21:49:03

首先,在arrange()之前,这段代码在我的笔记本电脑上运行得很好,它停留了一秒钟,然后崩溃了。

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

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

您可以参考this了解更多细节。(参见下面的Example段落)

正常情况下,当发生错误时,缓冲区也会刷新,这是当前的情况,也让我有点困惑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63868436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档