注册 登录
编程论坛 C++教室

用链队输出杨辉三角,我的程序只能输出两行,请好心的朋友帮我看下我的程序哪错了

wxcstc 发布于 2014-03-25 07:55, 538 次点击
程序代码:

#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
然后跳出一个框,说程序已停止工作
求解答,谢谢
6 回复
#2
hubinyes2014-03-25 10:26
void queue::append(int x)
{
    queue*s=new queue;
    s->data=x;
    if(front==NULL)
    {
        front=s;
        rear=s;
        front->next = rear;// here
    }
    else
    {
        rear->next=s;
        rear=s;
        rear->next=NULL;
    }
}
#3
wxcstc2014-03-25 14:55
嗯,多谢,的确是这里错了
#4
wxcstc2014-03-25 15:36
回复 2楼 hubinyes
能不能教下我这里怎么用setw函数使输出的整齐呢?
#5
wp2319572014-03-25 16:04
以下是引用wxcstc在2014-3-25 15:36:40的发言:

能不能教下我这里怎么用setw函数使输出的整齐呢?

http://zhidao.baidu.com/link?url=uKU_wOJQzs-cH__Bgh0H1vpXbD3a8MIG9k78UI36cOlj4SpnB7Br9uW89Hnd9NYV845msq8nAigVHeHe7udXOq
#6
wxcstc2014-03-25 18:40
回复 5楼 wp231957
嗯,谢谢
#7
wxcstc2014-03-26 18:21
回复 2楼 hubinyes
额,我想问下,为什么少了那个就不行?我代入数字去推时没发现有问题啊
1