时间:2018/07/30下午14:57
测试环境:code::blocks
测试代码:
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct linkQueueNode{
ElemType data;
struct linkQueueNode *next;
}linkQueueNode;
typedef struct linkQueue{
linkQueueNode *front;
linkQueueNode *rear;
}linkQueue;
int initLinkQueue(linkQueue *Q);
int linkQueueAppend(linkQueue *Q,ElemType e);
int linkQueueDelete(linkQueue *Q);
int main()
{
linkQueue Q;
initLinkQueue(&Q);
linkQueueAppend(&Q,1);
linkQueueAppend(&Q,2);
linkQueueAppend(&Q,3);
linkQueueDelete(&Q);
linkQueueDelete(&Q);
linkQueueDelete(&Q);
linkQueueDelete(&Q);
return 0;
}
int initLinkQueue(linkQueue *Q){
Q->front = NULL;
Q->rear = NULL;
printf("initLinkQueue is ok!\n");
return 1;
}
int linkQueueAppend(linkQueue *Q,ElemType e){
linkQueueNode *p;
if((p = (linkQueueNode *)malloc(sizeof(linkQueueNode)))==NULL)
return 0;
p->data = e;
p->next = NULL;
if(Q->front == NULL){//最开始没有指向任何的特殊情况
Q->front = p;
Q->rear = p;
printf("Append %d is ok\n",e);
return 1;
}
else{
Q->rear->next = p;
Q->rear = p;
printf("Append %d is ok!\n",e);
return 1;
}
}
/**
*函数功能:队列删除
*输入:队列指针
*输出:0或1
*/
int linkQueueDelete(linkQueue *Q){
ElemType e;
if(Q->front == NULL){
printf("队列为空!\n");
return 0;
}
else if(Q->front == Q->rear){
e = Q->front->data;
Q->front = NULL;
Q->rear = NULL;
printf("delete %d is ok!\n",e);
return 1;
}
else{
e = Q->front->data;
Q->front = Q->front->next;
printf("delete %d is ok!\n",e);
return 1;
}
}
测试结果: