zoukankan      html  css  js  c++  java
  • 数据结构之队列

    像栈一样,队列也是表。使用队列时插入在一端进行而删除则在另一端进行。

    队列基本模型

    队列的数组实现

    如同栈一样,对于队列而言任何表的实现都是合法的。
    对于每一个队列数据结构,我们保留一个数组Queue[]以及位置Front和Rear,它们代表队列两端。还要记录实际存在队列中元素的个数Size。

    这种实现存在一个潜在问题,经过10入列后,队列就满了,但其中元素并没有10个。简单的解决办法就是只要Front和Rear到达数组尾端,它就又绕回到开头,这叫循环数组的实现。

    实现

    1.#include <stdio.h>
    2.#include <stdlib.h>
    3.struct QueueRecord;
    4.typedef struct QueueRecord *Queue;
    5.
    6.
    7.struct QueueRecord
    8.{
    9. int Capacity;
    10. int Front;
    11. int Reaz;
    12. int Size;
    13. int *Array;
    14.};
    15.
    16.//构造空队列
    17.void MakeEmpty(Queue Q)
    18.{
    19. Q->Size = 0;
    20. Q->Front = 1;
    21. Q->Reaz=0;
    22.}
    23.
    24.//创建队列
    25.void CreateQueue(Queue Q, int MaxQueueSize)
    26.{
    27. if (Q == NULL)
    28. {
    29. printf("Error");
    30. }
    31. else
    32. {
    33. Q->Array = malloc(sizeof(int)*MaxQueueSize);
    34. Q->Capacity = MaxQueueSize - 1;
    35. MakeEmpty(Q);
    36. }
    37.}
    38.
    39.static int Succ(int Value, Queue Q)
    40.{
    41. if (++Value == Q->Capacity)
    42. Value = 0;
    43. return Value;
    44.}
    45.
    46.
    47.//入列
    48.void Enqueue(int X, Queue Q)
    49.{
    50. if (Q == NULL)
    51. {
    52. printf("Error");
    53. }
    54. else
    55. {
    56. Q->Size++;
    57. Q->Reaz = Succ(Q->Reaz, Q);
    58. Q->Array[Q->Reaz] = X;
    59. }
    60.}
    61.//出列
    62.void Dequeue(Queue Q)
    63.{
    64. if (Q == NULL)
    65. {
    66. printf("Erro");
    67. }
    68. else
    69. {
    70. Q->Size--;
    71. printf("%d",Q->Array[Q->Front]);
    72. Q->Front = Succ(Q->Front, Q);
    73. }
    74.}
    75.
    76.void main()
    77.{
    78. Queue S;
    79. S = malloc(sizeof(Queue));
    80. CreateQueue(S,10);
    81. Enqueue(5, S);
    82. Dequeue(S);
    83.}
  • 相关阅读:
    POJ-3176 Cow Bowling
    01背包、完全背包、多重背包
    最后的几天暑假学习
    暑假的学习
    凸包算法(Graham扫描法)详解
    微软版的SqlHelper.cs类
    SQL语句分组排序,多表关联排序
    SQL存储过程分页(通用的拼接SQL语句思路实现)
    增加删除字段修改字段名,修改表结构,非常用SQL语句技巧总结
    Asp.net mvc返回Xml结果,扩展Controller实现XmlResult以返回XML格式数据
  • 原文地址:https://www.cnblogs.com/Tan-sir/p/7678035.html
Copyright © 2011-2022 走看看