顺序队列的实现

顺序对列头文件

  1 #pragma once
  2 #include<stdlib.h>
  3 #include <stdio.h>
  4 #include<stddef.h>
  5 #define MAX_SIZE 100
  6 
  7 typedef char TreeType;
  8 typedef struct TreeNode
  9 {
 10     TreeType data;
 11     struct TreeNode *lchild;
 12     struct TreeNode *rchild;
 13 }TreeNode;
 14 
 15 typedef  TreeNode QueueType;
 16 typedef struct QueueNode
 17 {
 18     QueueType *data;                                                                                        
 19     size_t size;
 20     size_t head;
 21     size_t tail;
 22 }QueueNode;
 23 
 24 void SeqQueueinit(QueueNode *queue);
 26 void SeqQueuePop(QueueNode *queue);
 27 void SeqQueuefront(QueueNode *queue,QueueType *value);

源文件

 1 #include"queue.h"                                                                                           
  2 void SeqQueueinit(QueueNode *queue)
  3 {
  4     if(queue==NULL)
  5         return ;
  6     queue->data=(QueueType*)malloc(MAX_SIZE*sizeof(QueueType));
  7     queue->size=0;
  8     queue->head=0;
  9     queue->tail=0;
 10 }
 11 void SeqQueuePush(QueueNode *queue,QueueType *value)
 12 {
 13     if(queue==NULL)
 14         return;
 15     if(queue->tail>=MAX_SIZE)
 16     {
 17         queue->tail=0;
 18     }
 19     queue->data[queue->tail++]=*value;
 20     queue->size++;
 21 }
 22 void SeqQueuePop(QueueNode *queue)
 23 {
 24     if(queue==NULL)                                                                                         
 25         return;
 26     if(queue->size==0)
 27         return ;
 28     queue->head++;
 29     queue->size--;
 30     if(queue->head>=MAX_SIZE)
 31     {
 32         queue->head=0;
 33     }
 34 }
 35 void SeqQueuefront(QueueNode *queue,QueueType *value)
 36 {
 37     if(queue==NULL)
 38         return;
 39     if(queue->size==0)
 40         return ;
 41     *value=queue->data[queue->head];
 42 
 43 }

测试代码

 44 #if 0 
 45 int main()
 46 {
 47     QueueType a;
 48     QueueNode queue;
 49     SeqQueueinit(&queue);
 50     SeqQueuePush(&queue,9);
 51     SeqQueuePush(&queue,3);
 52     SeqQueuePush(&queue,4);
 53     SeqQueuePush(&queue,7);
 54     SeqQueuefront(&queue,&a);
 55     printf("%d ",a);
 56     return 0;
 57 }
 58 #endif   

makefile

  1 .PHONY:clean
  2 tree:tree.c queue.c                                                                                         
  3     gcc -g -o $@ $^
  4 clean:
  5     rm -f tree
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值