队列的实现C语言

来源:互联网 发布:fastreport 数据分栏 编辑:程序博客网 时间:2024/05/14 13:26

先用数组实现队列 ,注意变量的初始化。

#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;
}




0 0
原创粉丝点击