Code Bye

问一下大家怎么样把这个结构体压进栈啊?

struct Node{
	long n;int tag;
};
long Fb(long n)
{
	LinkedStack <Node> S;Node *w;long sum=0;
	do
	{
		while(n>1){w->n =n;w->tag =1;S.Push (*w);n--;}
		sum=sum+n;
		while(S.IsEmpty ()==false)
		{
			S.Pop (*w);
			if(w->tag ==1)
			{
				w->tag =2;
				S.Push (*w);
				n=w->n-2;
				break;
			}
		}
	}while(S.IsEmpty ()==false);
	return sum;
}
void LinkedStack<T>::Push(const T &x)
{
	top = new StackNode<T>(x, top);
	assert(top);
}
template <typename T>
bool LinkedStack<T>::Pop(T &x)
{
	if (IsEmpty()){
		return false;
	}
	StackNode<T> *p = top;
	top = top->link;
	x = p->data;
	delete p;
	return true;
}
解决方案:40分
  代码太少了,很多东西不会到你是怎么处理的,从下面pop和push看,感觉你的T代表的是结构体的类型,即:struct Node。假如是的话,那么pop和push处理的还是相当通用的。Fb函数有问题,Node *w;这里,Node是哪里来的?w也没有赋值就使用了,w指向哪里根本就无法预料。根据这点代码看,你最大的问题是没有给w动态申请空间,或指向同类型的变量。
假如你能保证你以前的代码是通用的,没问题的,那么查问题的时候直接查找你新编写的不就行了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问一下大家怎么样把这个结构体压进栈啊?