链式队列的复习

#ifndef __LINKQUEUE_H__
#define __LINKQUEUE_H__
#include "error.h"

#define TRUE  1
#define FALSE 0

typedef int QueueData;
typedef struct _node
{
	QueueData data;
	struct _node *next;
}Node;

typedef struct _queue
{
	Node *front;
	Node *rear;
}Queue;

Queue* Create_Queue();

int QueueEmpty (Queue *Q);   

// 进队
int EnQueue (Queue *Q, QueueData x);   

// 出队
int DeQueue (Queue *Q, QueueData *x);

// 取队头
int GetFront (Queue *Q, QueueData *x);

int Destroy_Queue (Queue *Q);

#endif // __LINKQUEUE_H__

#include "LinkQueue.h"#include <stdlib.h>Queue* Create_Queue(){Queue * q = (Queue*)malloc(sizeof(Queue)/sizeof(char));if (q == NULL){errno = MALLOC_ERROR;return NULL;}// 置空队q->front = NULL;q->rear = NULL;return q;}int QueueEmpty (Queue *q){if (q == NULL){errno = ERROR;return FALSE;}return q->front == NULL;}int EnQueue (Queue *q, QueueData x){if (q == NULL){errno = ERROR;return FALSE;}Node * node = (Node*)malloc(sizeof(Node)/sizeof(char));if (node == NULL){errno = MALLOC_ERROR;return FALSE;}node->data = x;node->next = NULL;if (q->front == NULL){q->front = node;q->rear = node;}else{q->rear->next = node;q->rear = node;}return TRUE;}int DeQueue (Queue *q, QueueData *x){if (q == NULL){errno = ERROR;return FALSE;}if (QueueEmpty(q)){errno = EMPTY_QUEUE;return FALSE;}Node *p = q->front;*x = p->data;q->front = p->next;free(p);if (q->front == NULL)q->rear = NULL;return TRUE;}int GetFront (Queue *q, QueueData *x){if (q == NULL){errno = ERROR;return FALSE;}if (QueueEmpty(q)){errno = EMPTY_QUEUE;return FALSE;}*x = q->front->data;return TRUE;}int Destroy_Queue (Queue *q){if (q == NULL){errno = ERROR;return FALSE;}int x;while (QueueEmpty(q) != TRUE){DeQueue(q, &x);}free(q);return TRUE;}

#include "LinkQueue.h"#include <stdio.h>int main(){Queue* q = Create_Queue();int i;char str[50];for (i = 0; i < 10; i++){if (EnQueue(q, i) != TRUE){sprintf (str, "第 %d 个元素入队失败", i);myError(str);}}int x;for (i = 0; i < 10; i++){if (DeQueue(q, &x) != TRUE){sprintf
 (str, "第 %d 个元素出队失败", i);myError(str);}printf ("x = %d\n", x);}return 0;}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值