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

得分:20

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

#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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值