itfhuv 2021-08-29 20:24 采纳率: 60%
浏览 52
已结题

第一个while循环后无法输出


#include<iostream>
using namespace std;
struct Node {
    char x = ' ', y = ' ';//x存储0   y储存-或*,分别代表史莱姆和通电状况
    int d_flag = 0;//相异的flag,0是前后相同,1,反之,前后相异
    struct Node* next=NULL;
};
struct Node* head = NULL , * p = NULL, * r = NULL;


int main() {

    //1.输入史莱姆及其关系
    cout << "输入史莱姆0和通电情况-,输入x则停止输入"<<endl;
    char x1='y', y1='y';
    //cin >> x1 >> y1;
    head = new Node;
    r = head;
    while (x1 != 'x') {
        p = new Node;
        x1 = getchar();
        y1 = getchar();
        p->x = x1;
        p->y = y1;
        p->next = NULL;
        if(r!=NULL)
        r->next = p;
        r = p;
        
    }
    
    p = head->next;

    //2.通过是否通电,判断前后是否相异

    while (p->next != NULL) {
        if (p->y == '-')p->d_flag = 1;
    }

    p = head->next;
    while (p->next!= NULL) {
        cout << p->d_flag << " ";
        p = p->next;
    }
    //cout << p->d_flag;
}

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/666328932036177.png 'image.png')

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-08-29 21:53
    关注

    修改如下,供参考:

    #include<iostream>
    using namespace std;
    struct Node {
        char x = ' ' , y = ' ';//x存储0   y储存-或*,分别代表史莱姆和通电状况
        int d_flag = 0;//相异的flag,0是前后相同,1,反之,前后相异
        struct Node* next = NULL;
    };
    struct Node* head = NULL , * p = NULL, * r = NULL;
    
    int main() {
        //1.输入史莱姆及其关系
        cout << "输入史莱姆0和通电情况-,输入x则停止输入"<<endl;
        char x1='y', y1='y';
        //cin >> x1 >> y1;
        head = new Node;
        head->next = NULL;
        r = head;
        while (1) {          //while (x1 != 'x')
            if((x1 = getchar()) == 'x') break;
            y1 = getchar();
            p = new Node;
            p->x = x1;
            p->y = y1;
            p->next = NULL;
                             //if(r!=NULL)
            r->next = p;
            r = p;
        }
        p = head;             //p = head->next;
        //2.通过是否通电,判断前后是否相异
        while (p->next != NULL) {
            p = p->next;
            if (p->y == '-') p->d_flag = 1;
        }
        p = head;             //p = head->next;
        while (p->next != NULL){
            p = p->next;
            cout << p->d_flag << " ";
        }
        //cout << p->d_flag;
        
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月7日
  • 已采纳回答 8月30日
  • 创建了问题 8月29日

悬赏问题

  • ¥15 爬取1-112页所有帖子的标题但是12页后要登录后才能 我使用selenium模拟登录 账号密码输入后 会报错 不知道怎么弄了
  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点