m0_69836402 2022-06-07 09:16 采纳率: 100%
浏览 76
已结题

请绘制代码运行的流程图

要有7个流程图
第一个流程图是元素入队操作的
第二个流程图是元素出队操作的
第三个是遍历队列的
第四个是获得队长的
第五个是获得队头的
第六个是退出操作的
第七个是程序整体的流程图
有些流程图可能非常短,但是还是请画一下

下列是程序源代码,C语言写的

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
// 队列的节点 
struct Node
{
        int data;
        struct Node* next;
};
// 队首队尾指针 
struct Queue
{
        struct Node* front;
        struct Node* rear;
        int size;
};
 
void QueueInit(struct Queue* queue) // 初始化 
{
        queue->front = NULL;
        queue->rear = NULL;
        queue->size = 0;
}
 
int QueueEmpty(struct Queue* queue) // 是否为空 
{
        return (queue->size == 0);
}
 
void QueuePush(struct Queue* queue) // 入队 
{
        struct Node* node;
        int data;
        node = (struct Node*)malloc(sizeof(struct Node));
        assert(node != NULL);
        printf("\n");
        printf("请输入要入队的数:\n");
        scanf("%d",&data);
        node->data = data;
        node->next = NULL; 
        if(QueueEmpty(queue))
        {
            queue->front = node;
            queue->rear = node;
        }
        else
        {            
            queue->rear->next = node;
            queue->rear = node;
        }
        ++queue->size;
        printf("\n");
        printf("入队成功;\n");
}
 
void QueuePop(struct Queue* queue) // 出队 
{
    int data;
    struct Node* tmp = queue->front;
        if (QueueEmpty(queue)) 
        {
            printf("队空;\n");
            return;
        }
        data = queue->front->data;
        queue->front = queue->front->next;
        free(tmp);
        --queue->size;
        printf("\n");
        printf("%d 出队成功;\n",data);
        return;
} 
 
void QueueClear(struct Queue* queue) // 清空 
{
     struct Node* tmp;
     while(queue->front)
     {
         tmp = queue->front;
         queue->front = queue->front->next;
         free(tmp);
     }
}
 
void getFront(struct Queue* queue)
{ //得到头元素 
    if(QueueEmpty(queue))
    {
        printf("队空!!!\n");
        return;
    }
    printf("队头为: %d\n",queue->front->data);
    return;
}
 
void show(struct Queue* queue)
{ // 遍历 
    struct Node* temp = queue->front;
    if(QueueEmpty(queue))
    {
        return;
    }
    while(temp != NULL)
    {
        printf("%d  ",temp->data);
        temp = temp->next;
    }
    printf("\n");
    return;
}
 
int getLength(struct Queue* queue) 
{  // 获得长度 
    int length = 0;
    struct Node* temp = queue->front;
    if(QueueEmpty(queue))
    {
        return 0;
    }
    while(temp != NULL){
        length++;
        temp = temp->next;
    }
    return length;
}
 
void menu()
{ // 菜单 
    printf("----------队列操作----------\n");
    printf("-----1.入队\n");
    printf("-----2.出队\n");
    printf("-----3.遍历\n");
    printf("-----4.长度\n");
    printf("-----5.队头\n");
    printf("-----6.退出\n");
    printf("-----7.清空\n");
    printf("请选择你要进行的操作:\n");
    printf("\n");
    return;
}
  
int main() // 主函数 
{
        struct Queue queue;  
        int flag = 1;
        int choice;
        int length = 0;
        QueueInit(&queue);
        while(flag)
        {
            printf("\n");
            menu();
            scanf("%d",&choice);
            switch(choice)
            {
                case 1:
                    QueuePush(&queue);
                    break;
                case 2:
                    QueuePop(&queue);
                    break;
                case 3:
                    show(&queue);
                    break;
                case 4:
                    length = getLength(&queue);
                    printf("长度为%d \n",length);
                    break;
                case 5:
                    getFront(&queue);
                    break;
                case 6:
                    flag = 0;
                    QueueClear(&queue);
                    printf("已退出~~\n");
                    break;
                case 7:
                    QueueClear(&queue);
                    printf("已清空~~\n");
                    break;
                default:
                    printf("输入有误;\n");
                    break;
            }
        }
        printf("\n");
        return 0;
}

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2022-06-07 11:47
    关注

    1

    img

    2

    img

    3

    img

    4

    img

    5

    img

    6

    img

    7

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月15日
  • 已采纳回答 6月7日
  • 创建了问题 6月7日

悬赏问题

  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿