首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

程序运行出错解决办法

2012-02-21 
程序运行出错#includeiostream#includestdio.htypedefstruct{int*elemintfrontintrearintqueuesize

程序运行出错
#include   <iostream>
#include   <stdio.h>

  typedef   struct   {
          int   *elem   ;
          int   front   ;
          int   rear     ;
          int   queuesize;
          }Queue   ;
    void   InitQueue(Queue   &Q   ,int   maxsize)
    {
            Q.elem   =   new   int[maxsize];
            Q.queuesize   =   maxsize   ;
            Q.front   =   Q.rear   =0;
            }  
    bool     GetHead(Queue   &Q,int   e)  
      {
              if(Q.front==Q.rear)
              return   false;
              e=Q.elem[Q.front];
            return   true;
              }      
    bool   DeQueue(Queue   &   Q,   int   e)  
    {
            if   (Q.front==Q.rear)
            return   false;
            e=   Q.elem[Q.front];
            Q.front=   (Q.front+1)%Q.queuesize;
            return   true;
            }        
    bool   EnQueue(Queue   &   Q,int   e)  
    {
            if((Q.rear+1)%Q.queuesize==Q.front)
            return   false;
            Q.elem[Q.rear]=e;
            Q.rear=(Q.rear+1)%Q.queuesize;
            return   true;
            }        
int   main(int   argc,   char   *argv[])
{     int   n;
      cout < < "please   input   n: " < <endl;
      cin> > n;
        Queue   Q;
    InitQueue(Q,   100);
    for(int   i=1;i <=n;i++)
    cout < < "   ";
    cout < <1 < <endl;
    EnQueue(Q,0);
    EnQueue(Q,1);
    EnQueue(Q,1);
    int   k=1,s,e;
    while(k <n)
    {
            for(int   i=1;i <=n-k;i++)
            cout < < "   ";
            EnQueue(Q,0);
            do{
                    DeQueue(Q,s);
                    GetHead(Q,e);
                    if(e)


                    cout < <e < < "   ";
                    else   cout < <endl;
                    EnQueue(Q,s+e);
                    }
              while(e!=0);
              k++;  
            }
        DeQueue(Q,e);
        while(Q.front!=Q.rear)  
        {
                DeQueue(Q,e);
                cout < <e < < "   ";
                }  
   
}

[解决办法]
是函数头写错了,至少在以下两个函数中,参数e只是被赋值,没有被引用。
bool GetHead(Queue &Q,int e)
bool DeQueue(Queue & Q, int e)
所以,要让它们充分起作用,这里的int e应该用int& e才合理,从main中看,也是引用才合理,这样s,e没必要初始化,因为程序保证了在引用它之前一定在函数中被赋值了。

这里仅就语法角度说明矛盾的地方,没有仔细看这个程序是干什么的(语用角度)。所以也有可能有偏差,权当抛砖引玉吧。

热点排行