摘要:(1)用链表实现队列,,基本数据结构.很简单。
(2)注意开始rear与front的位置关系.
#include "stdafx.h"
#include "malloc.h"
#include "stdlib.h"
typedef struct QueueRecord * queue;
struct QueueRecord
{
int Element;
queue Next;
};
typedef struct Node *PtrtoNode;
struct Node
{
queue Front;//定义队首
queue Rear;//定义队尾
int size;
int Cpacity;
};
PtrtoNode Create(int MaxElements)
{
int i = 0;
PtrtoNode node;
queue Q,temp;
node = (PtrtoNode)malloc(sizeof(Node));
node->Cpacity = MaxElements;
node->size = 0;
temp = Q;
while (i++ < MaxElements)
{
Q = (queue)malloc(sizeof(QueueRecord));
Q = Q->Next;
}
Q->Next = NULL;
node->Rear = temp;
node->Front = temp->Next;
return node;
}
void Enqueue(PtrtoNode node,int x)
{
if (node->size == node->Cpacity)
{
puts("error: overstack");
return;
}
queue Q = node->Rear;
Q->Next->Element = x;
node->size ++;
node->Rear = Q->Next;
return;
}
int Dequeue(PtrtoNode node)
{
int x ;
if (node->size == node->Cpacity)
{
puts("error:empty");
return(-1);
}
queue Q = node->Front;
x = Q->Element;
node->Front = Q->Next;
return x;
}
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}