如何编写C++ do while循环实现符合预期的链表数据插入功能?
问题原因
当前代码的do-while循环采用「先执行循环体、后判断循环条件」的执行逻辑,你原有的写法没有对输入的ans做前置判断,无论用户输入的ans是不是1,都会先执行一遍创建链表节点、录入数据的操作,之后才判断是否进入下一轮循环,和预期逻辑不符。
修复后的do-while循环代码
do { cout << "Do you want to add data?? " << endl; cin >> ans; // 仅当ans为1时执行添加数据逻辑 if(ans == 1) { if(start == NULL) { start = new node(); cout << "Enter data " << endl; cin >> start->data; start->next = NULL; prev = start; } else { temp = new node(); cout << "Enter data " << endl; cin >> temp->data; temp->next = NULL; prev->next = temp; prev = temp; } } }while(ans == 1);
逻辑说明
修改后输入ans会先做值判断,只有ans为1时才会走添加节点的流程,如果输入其他值会直接跳过添加逻辑,退出循环,不会生成多余的无效节点。
内容的提问来源于stack exchange,提问作者Efty Shan Abid
相关产品推荐
相关产品推荐

