#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;
}

第一个while循环后无法输出
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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; }本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用