用链队输出杨辉三角,我的程序只能输出两行,请好心的朋友帮我看下我的程序哪错了
程序代码:
#include<iostream> using namespace std; class queue { public: queue(); ~queue(); bool empty() const; void append(int); int serve(); private: queue *front,*rear,*next; int data; }; queue::queue() { front=NULL; rear=NULL; } bool queue::empty() const { if(front==NULL) return true; return false; } void queue::append(int x) { queue*s=new queue; s->data=x; if(front==NULL) { front=s; rear=s; } else { rear->next=s; rear=s; rear->next=NULL; } } int queue::serve() { int a; if(empty())return 0; queue*u; u=front; a=front->data; front=u->next; delete u; return a; } queue::~queue() { while(!empty())serve(); } void outnumber(int n) { int s1,s2,i,j,m=0; queue a; cout<<1<<endl; a.append(1); for(i=2;i<=n;i++) { s1=0; for(j=1;j<=i-1;j++) { s2=a.serve();//循环第二次时,这个语句不执行了,原因? cout<<s1+s2<<" "; a.append(s1+s2); s1=s2; } cout<<1<<endl; a.append(1); } } int main() { outnumber(3); }
无论outnumber里的数怎么改,输出结果一直是
1
1 1
然后跳出一个框,说程序已停止工作
求解答,谢谢