顺序队列基本操作
順序隊列基本操作
#include?"stdafx.h"
#include?"stdio.h"
#include?"stdlib.h"
#define??SMALL?1
#if(SMALL)
?#define?MAX?7
?int?QueueData[MAX]?=?{'A','B','C','D','E','F','G'};
#else
?#define?MAX?14
?int?QueueData[MAX]?=?{'A','B','C','D','E','F','G','H','I','J','K','L','M','N'};
#endif
/**//*順序隊列類型定義*/?
typedef?struct
{
?int?data[MAX];
?int?head;
?int?tail;
}sqQueue;
/**//*鏈隊列類型定義*/?
struct?LinkQueue
{
?int?data;
?struct?LinkQueue?*link;
};
typedef?struct?LinkQueue?lkQueue;
//-----------------------------------------------------------------------------------------
/**//*順序隊列基本操作函數定義部分*/
//順序隊列的初始化函數sqInitialize()
sqQueue?*sq_Initialize()
{
?sqQueue?*p;
?p?=?(sqQueue?*)malloc(sizeof(sqQueue));
?if(p==NULL)
?{
??return(NULL);
?}
?else
?{
??p->data[0]?=?0;
??p->head?=?0;
??p->tail?=?0;
??return(p);
?}
}
//順序隊列的判空函數qIsEmpty()
int?qIsEmpty(sqQueue?*queue)
{
?if(queue->head==queue->tail)
??return(1);
?else
??return(0);
}
//順序隊列的判滿函數qIsFull()
int?qIsFull(sqQueue?*queue)
{
?if(queue->head==MAX)
??return(1);
?else
??return(0);
}
//順序隊列的入隊函數qInQueue()
int?qInQueue(sqQueue?*queue,int?data)
{
?if(queue->tail==MAX)
?{?
??printf("隊列已滿!\n");
??return(0);
?}
?else
?{
??queue->data[queue->tail++]?=?data;
??return(1);
?}
}
//順序隊列的出隊函數qOutQueue()
int?qOutQueue(sqQueue?*queue,int?*p)
{
?if(queue->head==queue->tail)
?{
??printf("隊列已空!\n");
??return(0);
?}
?else
?{
??*p?=?queue->data[queue->head++];
??return(1);
?}
}
//順序隊列的數據入隊操作函數qInputValue()
void?qInputValue(sqQueue?*queue,int?array[])
{
?int?i=0;
?while(qInQueue(queue,array[i]))
??printf("Queue[%d]?=?%c\t",i,array[i++]);
}
//順序隊列的數據出隊操作函數qOutputValue()
void?qOutputValue(sqQueue?*queue)
{
?int?i,QueueData;
?i=0;
?while(qOutQueue(queue,&QueueData))
??printf("Queue[%d]?=?%c\t",i++,QueueData);
?printf("\n");
}
//-----------------------------------------------------------------------------------------
/**//*鏈式隊列基本操作函數定義部分*/
//鏈式隊列的初始化函數lk_Initialize()
lkQueue?*lk_Initialize()
{
?lkQueue?*p;
?p?=?(lkQueue?*)malloc(sizeof(lkQueue));
?if(p==NULL)
?{
??return(NULL);
?}
?else
?{
??p->data?=?0;
??p->link?=?NULL;
??return(p);
?}
}
//鏈式隊列的入隊函數lkInQueue()
//注意:在入隊時,參數是隊尾指針,返回值也是隊尾指針
lkQueue?*lkInQueue(lkQueue?*tail,int?data)
{
?lkQueue?*p;
?p?=?(lkQueue?*)malloc(sizeof(lkQueue));
?if(p==NULL)
?{
??printf("新增鏈式隊列元素時內存溢出!\n");
??return(tail);
?}
?else
?{
??p->data?=?data;
??p->link?=?tail;
??return(p);
?}
}
//鏈式隊列的出隊函數lkInQueue()
//注意:在出隊時,參數是隊首指針,返回值也是隊首指針
lkQueue?*lkOutQueue(lkQueue?*head,int?*data)
{
?*p?=?head->data;
?lkQueue?*p;
?p?=?(lkQueue?*)malloc(sizeof(lkQueue));
?if(p==NULL)
?{
??printf("創建鏈式隊列時內存溢出!\n");
??return(tail);
?}
?else
?{
??p->data?=?data;
??p->link?=?tail;
??return(p);
?}
}
//-----------------------------------------------------------------------------------------
int?main(int?argc,?char*?argv[])
{
?sqQueue?*queue1;
?lkQueue?**lkHead,**lkTail;
?queue1?=?sq_Initialize();
?if(queue1==NULL)
?{
??printf("創建順序隊列時內存溢出!\n");
??return?0;
?}
?else
?{
??printf("\n順序隊列[入隊]數據\n");
??qInputValue(queue1,QueueData);
??printf("\n順序隊列[出隊]數據\n");
??qOutputValue(queue1);
?}
?printf("\n運行完畢!\n");
?return?0;
}?
#include?"stdafx.h"
#include?"stdio.h"
#include?"stdlib.h"
#define??SMALL?1
#if(SMALL)
?#define?MAX?7
?int?QueueData[MAX]?=?{'A','B','C','D','E','F','G'};
#else
?#define?MAX?14
?int?QueueData[MAX]?=?{'A','B','C','D','E','F','G','H','I','J','K','L','M','N'};
#endif
/**//*順序隊列類型定義*/?
typedef?struct
{
?int?data[MAX];
?int?head;
?int?tail;
}sqQueue;
/**//*鏈隊列類型定義*/?
struct?LinkQueue
{
?int?data;
?struct?LinkQueue?*link;
};
typedef?struct?LinkQueue?lkQueue;
//-----------------------------------------------------------------------------------------
/**//*順序隊列基本操作函數定義部分*/
//順序隊列的初始化函數sqInitialize()
sqQueue?*sq_Initialize()
{
?sqQueue?*p;
?p?=?(sqQueue?*)malloc(sizeof(sqQueue));
?if(p==NULL)
?{
??return(NULL);
?}
?else
?{
??p->data[0]?=?0;
??p->head?=?0;
??p->tail?=?0;
??return(p);
?}
}
//順序隊列的判空函數qIsEmpty()
int?qIsEmpty(sqQueue?*queue)
{
?if(queue->head==queue->tail)
??return(1);
?else
??return(0);
}
//順序隊列的判滿函數qIsFull()
int?qIsFull(sqQueue?*queue)
{
?if(queue->head==MAX)
??return(1);
?else
??return(0);
}
//順序隊列的入隊函數qInQueue()
int?qInQueue(sqQueue?*queue,int?data)
{
?if(queue->tail==MAX)
?{?
??printf("隊列已滿!\n");
??return(0);
?}
?else
?{
??queue->data[queue->tail++]?=?data;
??return(1);
?}
}
//順序隊列的出隊函數qOutQueue()
int?qOutQueue(sqQueue?*queue,int?*p)
{
?if(queue->head==queue->tail)
?{
??printf("隊列已空!\n");
??return(0);
?}
?else
?{
??*p?=?queue->data[queue->head++];
??return(1);
?}
}
//順序隊列的數據入隊操作函數qInputValue()
void?qInputValue(sqQueue?*queue,int?array[])
{
?int?i=0;
?while(qInQueue(queue,array[i]))
??printf("Queue[%d]?=?%c\t",i,array[i++]);
}
//順序隊列的數據出隊操作函數qOutputValue()
void?qOutputValue(sqQueue?*queue)
{
?int?i,QueueData;
?i=0;
?while(qOutQueue(queue,&QueueData))
??printf("Queue[%d]?=?%c\t",i++,QueueData);
?printf("\n");
}
//-----------------------------------------------------------------------------------------
/**//*鏈式隊列基本操作函數定義部分*/
//鏈式隊列的初始化函數lk_Initialize()
lkQueue?*lk_Initialize()
{
?lkQueue?*p;
?p?=?(lkQueue?*)malloc(sizeof(lkQueue));
?if(p==NULL)
?{
??return(NULL);
?}
?else
?{
??p->data?=?0;
??p->link?=?NULL;
??return(p);
?}
}
//鏈式隊列的入隊函數lkInQueue()
//注意:在入隊時,參數是隊尾指針,返回值也是隊尾指針
lkQueue?*lkInQueue(lkQueue?*tail,int?data)
{
?lkQueue?*p;
?p?=?(lkQueue?*)malloc(sizeof(lkQueue));
?if(p==NULL)
?{
??printf("新增鏈式隊列元素時內存溢出!\n");
??return(tail);
?}
?else
?{
??p->data?=?data;
??p->link?=?tail;
??return(p);
?}
}
//鏈式隊列的出隊函數lkInQueue()
//注意:在出隊時,參數是隊首指針,返回值也是隊首指針
lkQueue?*lkOutQueue(lkQueue?*head,int?*data)
{
?*p?=?head->data;
?lkQueue?*p;
?p?=?(lkQueue?*)malloc(sizeof(lkQueue));
?if(p==NULL)
?{
??printf("創建鏈式隊列時內存溢出!\n");
??return(tail);
?}
?else
?{
??p->data?=?data;
??p->link?=?tail;
??return(p);
?}
}
//-----------------------------------------------------------------------------------------
int?main(int?argc,?char*?argv[])
{
?sqQueue?*queue1;
?lkQueue?**lkHead,**lkTail;
?queue1?=?sq_Initialize();
?if(queue1==NULL)
?{
??printf("創建順序隊列時內存溢出!\n");
??return?0;
?}
?else
?{
??printf("\n順序隊列[入隊]數據\n");
??qInputValue(queue1,QueueData);
??printf("\n順序隊列[出隊]數據\n");
??qOutputValue(queue1);
?}
?printf("\n運行完畢!\n");
?return?0;
}?
轉載于:https://www.cnblogs.com/powersun/archive/2007/11/25/972020.html
總結
- 上一篇: 软件架构师的工作职责
- 下一篇: Christmas Present