队列的链式的接口

第一 队列的链式的接口

1 头文件
#ifndef LINK_QUEUE
#define LINK_QUEUE

#define SUCCESS 10000
#define FAILURE 10001
#define TRUE 10002
#define FALSE 10003

struct Node //结点信息
{
int data;
struct Node *next;
};
typedef struct Node node;

struct Queue //队列信息
{
node *front;
node *rear;
};
typedef struct Queue queue;

int InitQueue(queue *q);
int EnterElem(queue *q, int e);
int EmptyQueue(queue q);
int LengthQueue(queue q);
int DeleteQueue(queue *q);
int clear(queue *q);
int destroy(queue *q);
#endif

2 主函数
#include “LinkQueue.h”
#include <stdio.h>

int main()
{
queue q;
int ret;

ret = InitQueue(&q);
if(FAILURE ==ret )
{
	printf("init failed!\n");
}
else if(SUCCESS == ret)
{
	printf("init success!\n");
}

int i;
for( i = 0;i < 5; i++)
{
	ret = EnterElem(&q,i+1);
	if(FAILURE ==ret )
	{
		printf("enter failed!\n");
	}
	else if(SUCCESS == ret)
	{
		printf("enter %d success!\n",i +1);
	}
}

ret = EmptyQueue(q);
if (ret == TRUE)
{
	printf("queue is empty\n");
}
else if(ret == FALSE)
{
	printf("queue is not empty\n");
}

ret = LengthQueue(q);
printf ("length is %d\n",ret);

ret = DeleteQueue(&q);
if(ret == FAILURE)
{
	printf("delete failure\n");
}
else
{
	printf("delete %d success\n", ret);
}

ret = clear(&q);
{
	if(FAILURE == ret)
	{
		printf("clear failure!\n ");
	}
	else
	{
		printf("clear success!\n");
	}
}

ret = destroy(&q);
{
	if(FAILURE == ret)
	{
		printf("destory failure!\n");
	}
	else
	{
		printf("destory success!\n");
	}
}

for( i = 0;i < 5; i++)
{
	ret = EnterElem(&q,i+1);
	if(FAILURE ==ret )
	{
		printf("enter failed!\n");
	}
	else if(SUCCESS == ret)
	{
		printf("enter %d success!\n",i +1);
	}
}


return 0;

}

三 函数库

#include “LinkQueue.h”
#include <stdlib.h>

int InitQueue(queue *q)
{
if(NULL == q)
{
return FAILURE;
}
node *s = (node *)malloc(sizeof(node) * 1);
if(NULL == s)
{
return FAILURE;
}
q->front = q->rear = s;
s->next = NULL;

return SUCCESS;

}

int EnterElem(queue *q, int e)
{
if(q == NULL || q->front == NULL || q->rear == NULL)
{
return FAILURE;
}

node *n = (node *)malloc(sizeof(node) * 1);
if(NULL == n)
{
	return FAILURE;
}

n->data = e;
n->next = NULL;
q->rear->next = n;
q->rear = n;

return SUCCESS;

}

int EmptyQueue(queue q)
{
return (q.front == q.rear) ? TRUE : FALSE;
}

int LengthQueue(queue q)
{
node *n = q.front;
int count = 0;

while(n->next)
{
	count++;
	n = n->next;
}

return count;

}

int DeleteQueue(queue *s)
{
int a;
if(s == NULL || s->front == NULL || s->rear == NULL)
{
return FAILURE;
}

node *n = s->front->next;
a = n->data;
s->front->next = n->next;
if(s->front->next == NULL)
{
	s->rear = s->front;
}

free(n);

return a;

}

int clear(queue *q)
{
if(NULL == q || q->front == NULL || q->rear == NULL)
{
return FAILURE;
}

node *p = q->front->next;
while(p)
{
	q->front->next = p->next;
	free(p);
	p = q->front->next;
}

q->rear = q->front;

return  SUCCESS;

}

int destroy(queue *q)
{
if(NULL == q)
{
return FAILURE;
}

free(q->front);
q->front = q->rear =NULL;

return SUCCESS;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值