• 2008秋季计算机软件基础0922课堂用例(2)


    /*---------------------------------------------------------
     Title: Link Queue(链队列) 链队列-链式存储结构的队列 
      请先阅读教材74-77页, 2.4.1-2.4.4节, 队列的定义及基本运算
     (注意:以下程序为简化后的,仅供入门学习之用)
    ----------------------------------------------------------
    */
    #include
    <stdio.h>
    #include
    <stdlib.h>
    //定义队列的结构
    struct queueNode
    {
       
    int data;//存放数据元素
       struct queueNode * next;//指针,指向下一个结点
    };
    struct queue
    {
        
    struct queueNode * front;
        
    struct queueNode * rear;
    };

    //初始化队列
    struct queue * InitialQueue()
    {
     
    struct queue * head;
     
    struct queueNode * node;
     node
    =(struct queueNode *)malloc(sizeof(struct queueNode ));
     head
    =(struct queue *)malloc(sizeof(struct queue ));
     node
    ->next=NULL;
     head
    ->front=node;
     head
    ->rear=node;
     
    return head;
    }

    //入队列
    void EnterIntoQueue(struct queue * head, int value)
    {
        
    struct queueNode * node;
        node
    =(struct queueNode *)malloc(sizeof(struct queueNode ));
        node
    ->data=value;
        node
    ->next=NULL;
        head
    ->rear->next=node;
        head
    ->rear=node;
        
     }

    //出队列
    void DeleteFromQueue(struct queue * head)
    {
        
    struct queueNode * node;
     
    if(head->front==head->rear)
     {
         printf(
    "Queue is empty, Delete failed\n");
     }
     
    else
        {
        node
    =head->front->next;
        head
    ->front->next=node->next;
        free(node);
        
    // when there is only one element, the following is necessary.
         if(head->front->next==NULL)
         head
    ->rear=head->front;
        }
    }

    //显示队列中所有元素
    void ShowAllElements(struct queue * head)
    {
     
    struct queueNode * node;
     printf(
    "\n Show all elements: \n");
     node
    =head->front->next;
     
    while(node!=NULL)
     {
      printf(
    " %d ",node->data);
      node
    =node->next;
     }
    }

    void main()
    {
        
    struct queue * head1;
        head1
    =InitialQueue();

        ShowAllElements(head1);
        EnterIntoQueue(head1,
    11);
        ShowAllElements(head1);
        EnterIntoQueue(head1,
    22);
        ShowAllElements(head1);
        DeleteFromQueue(head1);
        ShowAllElements(head1);
    }



  • 相关阅读:
    高性能 HTML5 地铁样式的应用程序中的内容
    微软披露更多ARM Win8细节
    下一代互联网搜索的前沿:意图、知识与云
    使用 Sphinx 更好地进行 MySQL 搜索使用 Sphinx 进行非全文本搜索
    如何加快数模计算以及如何解决数模计算的收敛性问题
    Google App Engine正式支持Python 2.7
    ASP.NET MVC模型绑定
    给 MySQL 增加 Sequence 管理功能
    使用 Rational Build Forge 自动化 IBM Cloud 上的构建和发布过程
    Windows Phone 8基于WinRT?
  • 原文地址:https://www.cnblogs.com/emanlee/p/1297324.html
Copyright © 2020-2023  润新知