• 顺序队列【数据结构-朱战立】


      1 //这是一个循环顺序队列的判空、压栈、出栈、取栈顶等操作
      2 #include <stdio.h>
      3 
      4 #define MaxSize 100
      5 typedef int bool;
      6 #define T 1
      7 #define F 0
      8 
      9 typedef int DataType;
     10 typedef struct queue{
     11     DataType data[MaxSize];
     12     int rear;
     13     int    front;
     14     int count;
     15 }SeqQueue;
     16 
     17 //队列初始化
     18 void SeqQueueInit(SeqQueue *queue)
     19 {
     20     queue->count = 0;
     21     queue->front = 0;
     22     queue->rear = 0;
     23 }
     24 
     25 //判断队列非空否
     26 bool SeqQueueNoEmpty(SeqQueue queue)
     27 {
     28     if (queue.count!=0)   //队列不为空
     29     {
     30         return 1;
     31     }
     32     else                 //队列为空
     33     {
     34         return 0;
     35     }
     36 }
     37 
     38 //进入队列
     39 int SeqQueuePush(SeqQueue *queue, DataType x)
     40 {
     41     if (queue->count>=MaxSize)
     42     {
     43         return 0;
     44     }
     45     queue->data[queue->rear]=x;
     46     queue->rear = (queue->rear + 1) % MaxSize;
     47     queue->count++;
     48     return 1;
     49 }
     50 
     51 //出队列
     52 int SeqQueuePop(SeqQueue *queue, DataType *x)
     53 {
     54     if (queue->count==0)
     55     {
     56         return 0;
     57     }
     58     *x = queue->data[queue->front];
     59     queue->front = (queue->front + 1) % MaxSize;
     60     queue->count--;
     61     return 1;
     62 }
     63 
     64 //取出队头
     65 int SeqQueueTop(SeqQueue queue)
     66 {
     67     if (queue.count==0)
     68     {
     69         return 0;
     70     }
     71     return queue.data[queue.front];
     72 }
     73 
     74 //主函数
     75 int main()
     76 {
     77     SeqQueue queue;
     78     int x, i;
     79 
     80     SeqQueueInit(&queue);
     81     for ( i = 0; i < 15; i++)
     82     {
     83         if ((SeqQueuePush(&queue, i)) == 0)
     84         {
     85             printf("1error");
     86             getchar();
     87             return;
     88         }
     89     }
     90     printf("队头:%d
    ", SeqQueueTop(queue));
     91     while (SeqQueueNoEmpty(queue)!=0)
     92     {
     93         if ((SeqQueuePop(&queue, &x)) == 0)
     94         {
     95             printf("2error");
     96             getchar();
     97             return;
     98         }
     99         else
    100         {
    101             printf("%d     ", x);
    102         }
    103     }
    104     getchar();
    105     return 0;
    106 }
  • 相关阅读:
    matlab练习程序(径向模糊1)
    matlab练习程序(摄像头获取数据)
    jpg转bmp(使用libjpeg)
    matlab练习程序(图像放大/缩小,双线性插值)
    一维最大子数组
    二分查找
    图像处理时用的卷积函数
    matlab练习程序(摄像头视频中截图)
    bmp24位彩色图像转8位灰度图像(纯C++)
    C#中值类型、引用类型 再次理解
  • 原文地址:https://www.cnblogs.com/leime/p/9485442.html
Copyright © 2020-2023  润新知