注册 登录
编程论坛 数据结构与算法

c语言程序在运行时没有错误没有警告就是exe停止工作怎么回事急需大神解答 本人将不胜感激

bccnjj 发布于 2012-07-25 20:47, 909 次点击
程序代码:
#include "stdio.h"
#include "malloc.h"
#define bool int;
#define true 1;
#define false 0;
typedef struct Queue
{
    int *pBase;
    int front;
    int rear;
}QUEUE;
void init(QUEUE *);
bool en_queue(QUEUE *, int val);
void traverse_queue(QUEUE *);
bool full_queue(QUEUE *);
bool out_queue(QUEUE *, int *);
bool emput_queue(QUEUE *);
int main(void)
{
    QUEUE Q;
    int val;
    init(&Q);
//    printf("Test printf");
    en_queue(&Q, 1);
    en_queue(&Q, 2);
    en_queue(&Q, 3);
    en_queue(&Q, 4);
    en_queue(&Q, 5);
    traverse_queue(&Q);
    if (output_queue(&Q, &val))
    {
        printf("出队成功,出队元素是:%d\n", val);
    }
    else
    {
        printf("出队失败!\n");
    }
//    printf("dfsdfsdfsdf\n");
    traverse_queue(&Q);
    return 0;
}
void init(QUEUE *pQ)
{
    pQ->pBase = (int *)malloc(sizeof(int) *6);
    pQ->pBase = 0;
    pQ->rear = 0;
//    return;
}
bool full_queue(QUEUE *pQ)
{
    if ( (pQ->rear+1)%6 == pQ->front)
    {
        return true;
    }
    else
    {
        return false;
    }
}
bool en_queue(QUEUE *pQ, int val)
{
    if (full_queue(pQ))
    {
        return false;
    }
    else
    {
        pQ->pBase[pQ->rear] = val;
        pQ->rear = (pQ->rear+1)%6;
        return true;
        //pQ->rear(pQ->rear+1)%6;
    }
}

void traverse_queue(QUEUE *pQ)
{
    int i = pQ->front;
    while (i != pQ->rear)
    {
        printf("%d ", pQ->pBase[i]);
        i = (i+1)%6;
    }
}
bool enput_queue(QUEUE *pQ)
{
    if (pQ->front == pQ->rear)
    {
        return true;
    }
    else
    {
        return false;
    }
}
bool output_queue(QUEUE *pQ, int *pVal)
{
    if (enput_queue(pQ))
    {
        return false;
    }
    else
    {
        *pVal = pQ->pBase[pQ->front];
        pQ->front = (pQ->front+1)%6;   
        return true;
    }
}
1 回复
#2
westfall9992012-07-27 12:35
#include "stdio.h"
#include "malloc.h"
#define bool int;
#define true 1;
#define false 0;

typedef struct Queue
{
    int *pBase;
    int front;
    int rear;
}QUEUE;

void init(QUEUE *);
bool en_queue(QUEUE *, int val);
void traverse_queue(QUEUE *);
bool full_queue(QUEUE *);
bool out_queue(QUEUE *, int *);
bool emput_queue(QUEUE *);
bool output_queue(QUEUE *pQ, int *pVal);    //添加这一句,否则编译器会找不到函数声明

int main(void)
{
    QUEUE Q;
    int val;
    init(&Q);
    printf("Test printf");
    en_queue(&Q, 1);
    en_queue(&Q, 2);
    en_queue(&Q, 3);
    en_queue(&Q, 4);
    en_queue(&Q, 5);
    traverse_queue(&Q);

    if (output_queue(&Q, &val))
    {
        printf("出队成功,出队元素是:%d\n", val);
    }
    else
    {
        printf("出队失败!\n");
    }
//    printf("dfsdfsdfsdf\n");
    traverse_queue(&Q);
    return 0;
}
void init(QUEUE *pQ)
{
    pQ->pBase = (int *)malloc(sizeof(int)*6);
    //pQ->pBase=0;    //这个地方很明显写错了
    pQ->front = 0;    //改成这一句
    pQ->rear = 0;
//    return;
}
bool full_queue(QUEUE *pQ)
{
    if ( (pQ->rear+1)%6 == pQ->front)
    {
        return true;
    }
    else
    {
        return false;
    }
}
bool en_queue(QUEUE *pQ, int val)
{
    if (full_queue(pQ))
    {
        return false;
    }
    else
    {
        pQ->pBase[pQ->rear] = val;
        pQ->rear = (pQ->rear+1)%6;
        return true;
        //pQ->rear(pQ->rear+1)%6;
    }
}

void traverse_queue(QUEUE *pQ)
{
    int i = pQ->front;
    while (i != pQ->rear)
    {
        printf("%d ", pQ->pBase[i]);
        i = (i+1)%6;
    }
}
bool enput_queue(QUEUE *pQ)
{
    if (pQ->front == pQ->rear)
    {
        return true;
    }
    else
    {
        return false;
    }
}
bool output_queue(QUEUE *pQ, int *pVal)
{
    if (enput_queue(pQ))
    {
        return false;
    }
    else
    {
        *pVal = pQ->pBase[pQ->front];
        pQ->front = (pQ->front+1)%6;   
        return true;
    }
}
1