作者:陌-天佑_807 | 来源:互联网 | 2023-09-25 10:53
我正在用C++语言打印链表的最大值。但我没有得到想要的输出。在构建和运行代码时,终端卡在构建它的过程中。我在VSCode和Sublimetext中都尝试过。我正在使用mi
我正在用 C++ 语言打印链表的最大值。但我没有得到想要的输出。在构建和运行代码时,终端卡在构建它的过程中。我在 VS Code 和 Sublime text 中都尝试过。我正在使用 mingw64 编译器。
运行程序后出现这种情况显示链表后卡住
#include
#include
using namespace std;
struct node {
int data;
struct node *next;
} *first = NULL;
//declaring a global head/first pointer which stores the address of first node
void create(int a[], int n) {
int i;
struct node *t, *last;
first = (struct node *)malloc(sizeof(struct node));
first->data = a[0];
first->next = NULL;
last = first;
for (i = 1; i // t = new node;
t = (struct node *)malloc(sizeof(struct node));
t->data = a[i];
t->next = NULL;
last->next = t;
last = t;
}
}
void display(struct node *p) {
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
}
int Max(struct node *p) {
int max = -100;
while (p != NULL) {
if (p->data > max) {
max = p->data;
p = p->next;
}
}
return max;
}
int main() {
int m = 0;
int a[] = { 3, 5, 7, 10, 15, 8, 12, 20 };
create(a, 8);
display(first);
printf("n");
m = Max(first);
cout <<"The maximum of the linked list is : " < return 0;
}
回答
while (p != NULL)
{
if (p->data > max)
{
max = p->data;
p = p->next;
}
}
将此更新为
while (p != NULL)
{
if (p->data > max)
{
max = p->data;
}
p = p->next;
}
否则您的代码将陷入无限循环。