C++ [堆栈][列表]我可以';我不理解我的错误
请帮忙,我不明白哪里出错了,编译后,程序并没有任何显示。需要创建两个堆栈,其中一个将包含随机数,另一个将只包含第一个堆栈中的数字,这大于第一个堆栈中所有数字的平均值C++ [堆栈][列表]我可以';我不理解我的错误,c++,list,stack,C++,List,Stack,请帮忙,我不明白哪里出错了,编译后,程序并没有任何显示。需要创建两个堆栈,其中一个将包含随机数,另一个将只包含第一个堆栈中的数字,这大于第一个堆栈中所有数字的平均值 #include "stdafx.h" #include <iostream> #include <ctime> using namespace std; struct stack //our stack { int num; stack* ptr = NULL; }; void add
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
struct stack //our stack
{
int num;
stack* ptr = NULL;
};
void addtostack(int &n, stack* p) //add element to stack
{
stack* newstack = new stack;
newstack->num = n;
newstack->ptr = p;
p = newstack;
}
void showstack(stack* p) //show stack
{
stack* current = p;
while (current->ptr)
{
cout << current->num << endl;
current = current->ptr;
}
}
int main()
{
srand(time(NULL));
const int SIZE = 5;
stack* first = new stack;
int rnd;
double average = 0;
for (int i = 0; i < SIZE; i++)
{
rnd = -50 + rand() % 101;
addtostack(rnd, first);
average += rnd;
}
average /= SIZE;
showstack(first);
system("pause > nul");
}
#包括“stdafx.h”
#包括
#包括
使用名称空间std;
结构堆栈//我们的堆栈
{
int-num;
堆栈*ptr=NULL;
};
void addtostack(int&n,stack*p)//将元素添加到堆栈
{
stack*newstack=新堆栈;
newstack->num=n;
新闻标题->ptr=p;
p=新闻标题;
}
void showstack(stack*p)//显示堆栈
{
堆栈*电流=p;
同时(当前->ptr)
{
coutnumptr;
}
}
int main()
{
srand(时间(空));
常数int SIZE=5;
stack*first=新堆栈;
int rnd;
双平均=0;
对于(int i=0;inul”);
}
线路
p = newstack;
不做你希望它做的事
它更改变量p
的本地副本。main
中的指针仍然指向它初始化时使用的唯一对象
您可以通过以下两种方式解决此问题:
p
。不过,您不需要通过引用传递n
void addtostack(int n, stack*& p) //add element to stack
{
stack* newstack = new stack;
newstack->num = n;
newstack->ptr = p;
p = newstack;
}
stack* addtostack(int n, stack* p) //add element to stack
{
stack* newstack = new stack;
newstack->num = n;
newstack->ptr = p;
return newstack;
}
然后将main
更改为:
for (int i = 0; i < SIZE; i++)
{
rnd = -50 + rand() % 101;
first = addtostack(rnd, first);
average += rnd;
}
for(int i=0;i
你遇到了什么问题?(错误消息、行为等)visual studio不显示任何错误消息问题是没有错误?很抱歉,我通知您,您没有被正确地教导。这是可怕的代码。这并不可怕,因为你是一个初学者,不知道更好,这是可怕的,因为你被教写可怕的代码。如果你想学习C++,忽略他们教给你的一切,你是否使用调试器来确保每一行都在做你所期望的?是否可以编写单元测试来测试您的单个方法?我们一直在为C#,Java和JavaScript做这件事。