先用数组实现队列 ,注意变量的初始化。
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int capacity;
int size;
int front;
int rear;
int *Array;
}Queue;
Queue *CreatQueue(Queue *queue);
void Enqueue(Queue *queue,int capacity);
//主函数
int main()
{
Queue *queue;
queue=(Queue *)malloc(sizeof(queue));
if(queue==NULL)
printf("Out of space");
Enqueue(CreatQueue(queue),queue->capacity);
printf("%d",queue->Array[0]);
}
//创建一个队列
Queue *CreatQueue(Queue *queue)
{
//queue=(Queue *)malloc(sizeof(queue));
//if(queue==NULL)
//printf("Out of space");
queue->capacity=10;
queue->Array=(int *)malloc(queue->capacity*sizeof(int));
if(queue->Array==NULL)
printf("Out of space");
queue->size=0;
queue->front=0;
queue->rear=-1;
return queue;
}
//元素进队列
void Enqueue(Queue *queue,int capacity)
{
queue->rear++;
queue->Array[queue->rear]=6;
queue->size++;
if(queue->rear==capacity)
queue->rear=0;
}
再采用链表犯法构建队列
#include<stdio.h>
#include<stdlib.h>
//链表节点
typedef struct node
{
int val;
struct node *next;
}node;
//包含队列元素结构
typedef struct
{
node *front;
node *rear;
int size;
}queue;
//创建一个空的队列
queue *Create_Queue()
{
queue *Queue;
Queue=(queue *)malloc(sizeof(queue));
if(Queue!=NULL)
{
Queue->front=NULL;
Queue->rear=NULL;
Queue->size=0;
}
return Queue;
}
//将元素写进队列
queue *EnQueue(queue *Queue,int element)
{
node *Pnode=(node *)malloc(sizeof(node));
if(Pnode!=NULL)
{
Pnode->val=element;
Pnode->next=NULL;
}
if(Queue->front==NULL)
{
Queue->front=Pnode;
}
else
{
Queue->rear->next=Pnode;
}
Queue->size++;
Queue->rear=Pnode;
return Queue;
}