• 数据结构之队列


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

    队列基本模型

    队列的数组实现

    如同栈一样,对于队列而言任何表的实现都是合法的。
    对于每一个队列数据结构,我们保留一个数组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.}
  • 相关阅读:
    写在毕业散伙饭后
    关于2005年高考志愿填报注意事项与分析
    如何在ASP.NET页面间传送数据
    MS Server 2000中的Table类型
    离职申请[转]
    JQUERY 获取text,areatext,radio,checkbox,select值
    DropdownList用法记录
    SQL小记
    认识SortedList类
    js中的|| 与 &&
  • 原文地址:https://www.cnblogs.com/Tan-sir/p/7678035.html
Copyright © 2020-2023  润新知