我的代码停在中间,没有错误C
my code stops in the middle and has no error c++
案例1工作正常,但情况2和3只需停止循环和程序 此后,我无法选择其他情况!我想知道为什么它阻止循环进行,因为这里的选择永远不会等于0,这是我相信这是阻止循环前进的唯一原因!提前致谢。
我还检查了功能,所有这些功能对我来说似乎都很好,我不确定问题是否可能与之有关
#include "stdafx.h"
#include <iostream>
using namespace std;
void insert_node(int new_data);
void print_node();
void delete_node();
int new_data;
char choice;
struct node {
int data;
node* next;
};
node* head = NULL;
void main()
{
do
{
cout << "Enter 1 to insert a new node n";
cout << "Enter 2 to disply the list n";
cout << "Enter 3 to delete the last node n";
cin >> choice;
switch (choice)
{
case '1':
cout << "Enter the data n";
cin >> new_data;
insert_node(new_data);
break;
case '2':
if (head != NULL)
print_node();
else
cout << "SORRY, your list is empty n";
break;
case '3':
delete_node();
break;
default:
cout << "Invalid entry n";
}
} while (choice != '0');
}
void insert_node(int new_data)
{
node* NewNode = new node;
NewNode->data = new_data;
if (head == NULL)
head = NewNode;
else
{
NewNode->next = head;
head = NewNode;
}
}
void print_node()
{
node* printer=head;
do
{
cout << printer->data<<" - ";
printer = printer->next;
} while (printer != NULL);
}
void delete_node()
{
if (head == NULL)
cout << "no node to be deleted n";
else
{
node* curr = head;
node* prev = NULL;
while (curr->next != NULL)
{
prev = curr;
curr = curr->next;
}
if (prev == NULL)
{
delete(curr);
head = NULL;
return;
}
prev->next = NULL;
delete(curr);
}
}
这是错误的
void insert_node(int new_data)
{
node* NewNode = new node;
NewNode->data = new_data;
if (head == NULL)
head = NewNode;
else
{
NewNode->next = head;
head = NewNode;
}
}
应该是
void insert_node(int new_data)
{
node* NewNode = new node;
NewNode->data = new_data;
NewNode->next = head;
head = NewNode;
}
将第一个节点添加到列表时,您的版本无法设置next
。如您所见,没有必要使head == NULL
成为特殊情况。
因为您首先没有正确创建列表,因此任何尝试从列表中打印或删除项目的尝试都可能失败。
,您的print_node
功能将在空列表上失败。循环循环时应该是一定的循环。
void print_node()
{
node* printer=head;
while (printer != NULL)
{
cout << printer->data<<" - ";
printer = printer->next;
}
}
您的delete_node
功能对我也很可疑。
相关文章:
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 我在OpenCV中有错误的"approxPolyDP(ROI_Vertices, ROI_Poly, 1.0, true)"
- 我在这个 C++ 代码上有错误吗?
- 错误:在“(”标记之前进行预期的构造函数、析构函数或类型转换.即使我有一个构造函数
- 仅使用boost.datetime在Windows上有错误
- 我的代码停在中间,没有错误C
- 继承默认构造函数在 gcc 中失败并在 clang 中工作,哪个有错误?
- 在快速排序程序中有错误
- 在c++中有错误的;未实现的构造函数
- 有错误的程序仍在编译吗
- OPNET:在OPNET的过程模型中写了一个函数,但有错误
- 在 Visual C++ 2010 中制作提取/编译程序,但有错误
- 我在数据结构方面有错误
- c++计算器atof没有错误,但它在中间一行崩溃(52)
- 为什么nasm说我在g++创建的程序集中有错误
- VIsual Studio说我在字符串中有错误
- 类型转换错误!在MSVC和GCC中都有
- boost::几何多边形的 outer() 在多边形旋转后有错误的坐标
- 是否有理由在错误处理的代码中不广泛看到错误?
- c++错误:在[函数名]之前有一个预期的初始化式