データ構造——キュー——初期化キュー、入行列、列の先頭要素の取得、列の最後の要素の取得、キューの有効要素の個数の取得、空判定、キューの廃棄
2082 ワード
キューの構造:
typedef QNode* QDataType;
// :
typedef struct QNode
{
struct QNode* pNext;
QDataType data;
}QNode;
//
typedef struct Queue
{
QNode *head; //
QNode *last; //
}Queue;
関数の概要://
void QueueInit(Queue* q);
//
void QueuePush(Queue* q, QDataType data);
//
void QueuePop(Queue* q);
//
QDataType QueueFront(Queue* q);
//
QDataType QueueBack(Queue* q);
//
int QueueSize(Queue* q);
// , , 0
int QueueEmpty(Queue* q);
//
void QueueDestroy(Queue* q);
初期化キュー://
void QueueInit(Queue* q)
{
q->head = q->last = NULL;
}
列の最後の列(列に入る):// //
void QueuePush(Queue* q, QDataType data)
{
QNode *node = (QNode *)malloc(sizeof(QNode));
node->data = data;
node->pNext = NULL;
if (q->head == NULL)
{
q->head = node;
q->last = node;
}
else
{
q->last->pNext = node;
q->last = node;
}
}
列の先頭から列を出す(列から出る):// //
void QueuePop(Queue* q)
{
QNode* node = (QNode*)malloc(sizeof(QNode));
node = q->head;
free(q->head);
q->head = node;
// last
if (q->head == NULL) {
q->last = NULL;
}
}
キューのヘッダ要素を取得://
QDataType QueueFront(Queue* q)
{
return q->head->data;
}
チームの最後の要素を取得://
QDataType QueueBack(Queue* q)
{
return q->last->data;
}
キューの有効要素の個数を取得します.//
int QueueSize(Queue* q)
{
int size;
for (QNode* c=q->head ; c !=NULL; c=c->pNext)
{
size++;
}
return size;
}
空の判定:// , , 0
int QueueEmpty(Queue* q)
{
if (q->head == NULL)
return 1;
else
return 0;
}
キューを廃棄する://
void QueueDestroy(Queue* q)
{
QNode* node;
for ( node =q->head; node !=NULL; node=node->pNext)
{
free(node);
}
q->head = NULL;
q->last = NULL;
}