| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 801 人关注过本帖
标题:运行时提示可执行程序停止工作,这是为什么,求大神指点(这是用链队输出杨 ...
只看楼主 加入收藏
徐海清
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-10-24
结帖率:100%
收藏
 问题点数:0 回复次数:5 
运行时提示可执行程序停止工作,这是为什么,求大神指点(这是用链队输出杨辉三角的程序)。
#include<stdio.h>
#include<malloc.h>

typedef int ElemType;

typedef struct qnode
{
    ElemType data;
    struct qnode * next;
}QNode;

typedef struct
{
    QNode * front;
    QNode * rear;
}LiQueue;

void InitQueue(LiQueue *&q)
{
    q=(LiQueue *)malloc(sizeof(LiQueue));
    q->front=q->rear=NULL;
}

void DestroyQueue(LiQueue * q)
{
    QNode * p=q->front, *r;
    if(p!=NULL)
    {
        r=p->next;
        while(r!=NULL)
        {
            free(p);
            p=r;r=p->next;
        }
        free(p);free(q);
    }
}

bool QueueEmpty(LiQueue * q)
{
    return(q->rear==NULL);
}

void EnQueue(LiQueue *& q,ElemType e)
{
    QNode * p;
    p=(QNode *)malloc(sizeof(QNode));
    p->data=e;
    p->next=NULL;
    if(q->rear==NULL)
        q->front=q->rear=p;
    else
    {
        q->rear->next=p;
        q->rear=p;
    }
}

bool DeQueue(LiQueue *&q,ElemType &e)
{
    QNode * t;
    if(q->rear=NULL)
        return false;
    t=q->front;
    if(q->front==q->rear)
        q->front=q->rear=NULL;
    else
        q->front=q->front->next;
    e=t->data;
    free(t);
    return true;
}

void Yanghui(int n)
{
    int i,j,s1,s2;
    LiQueue * q;
    ElemType e;
    printf("1 \n");
    EnQueue(q,1);
    for(i=2;i<=n;i++)
    {
        s1=0;
        for(j=1;j<i;j++)
        {
            s2=DeQueue(q,e);
            printf("%d ",s1+s2);
            EnQueue(q,s1+s2);
            s1=s2;
        }
        printf("1 \n");
        EnQueue(q,1);
    }
}

int main()
{
    int n;
    scanf("%d",&n);
    Yanghui(n);
    return 0;
}
搜索更多相关主题的帖子: 杨辉三角 include 
2014-10-24 22:01
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
首先我觉得你的yanghui 函数没有分配内存,这是最重要的错误,别的,我再想想。。。
2014-10-25 19:14
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
我也不太会用队列写,我从网上找了一篇,可以编译通过,你看看:
程序代码:
#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#include<process.h>

#define TRUE 1
#define ERROR 0
#define OK 1
#define FALSE 0
#define OVERFLOW -2
#define MAXSIZE 100;

typedef int Status;
typedef int Boolean;
typedef int Qelemtype;

typedef struct{
    Qelemtype *base;
    int front;
    int rear;
}SqQueue;

Status InitQueue(SqQueue &Q)
{ 
    Q.base = (Qelemtype *)malloc(100*sizeof(Qelemtype));
    if(!Q.base) exit(ERROR);
    Q.front = Q.rear = 0;
    return OK;
}

Status EnQueue(SqQueue &Q,Qelemtype e)
{
    if( (Q.rear+1)%100 == Q.front )
        return ERROR;
    Q.base[Q.rear] = e;
    Q.rear = (Q.rear+1)%MAXSIZE;
    return OK;
}

Status DeQueue(SqQueue &Q,Qelemtype &e)
{
    if(Q.front == Q.rear)
        return ERROR;
    e = Q.base[Q.front];
    Q.front = (Q.front+1)%MAXSIZE;
    return OK;
}

Status GetHead(SqQueue &Q, Qelemtype &x)
{
    if(Q.front == Q.rear)
        return ERROR;
    x = Q.base[Q.front];
    return OK;
}

void YHTriangle()
{
    SqQueue Q;
    Qelemtype e,x;
    int i,j,n;
    InitQueue(Q);
       EnQueue(Q,1);
       cout<<"Please enter the value of n:";
       cin>>n;
       for(i=1;i<=n;++i)
       {
           EnQueue(Q,1);
           cout<<endl;
          for(j=1;j<=i-1;++j)
          {
            DeQueue(Q,e);
            cout<<e<<' ';
            GetHead(Q,x);
            e=e+x;
            EnQueue(Q,e);
          }
        DeQueue(Q,x);
        cout<<x<<' ';
        EnQueue(Q,1);
       }
}

int main()
{
    char a;
    do{
        YHTriangle();
        cout<<endl;
        cout<<"Do you want to do it again?(y/n)";
        cin>>a;
        if( a!='y'&&a!='n')
            cout<<"\a\a\a"<<"Please enter right and enter again!"<<endl;
    }while( (a=='y')&&(a!='n') );
    system("pause");
    return 0;
}
2014-10-25 19:53
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
别看代码长,主要是一些基本函数,核心就是杨辉函数,耐心欧
2014-10-25 19:54
徐海清
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-10-24
收藏
得分:0 
回复 4 楼 soulmate1023
谢了,我是大二的小菜鸟,,,学渣。。。。
2014-10-26 11:56
徐海清
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-10-24
收藏
得分:0 
回复 2 楼 soulmate1023
是这样的,没有调用初始化函数InitQueue。。。谢了。
2014-10-26 14:34
快速回复:运行时提示可执行程序停止工作,这是为什么,求大神指点(这是用链队输 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032371 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved