栈和队列的基本操作

发布时间: 更新时间: 总字数:1273 阅读时间:3m 作者: IP上海 分享 网址
专栏文章
  1. 顺序表的基本操作
  2. 链表
  3. C++ 单链表的基本操作
  4. 栈和队列的基本操作(当前)
  5. C++ 二叉树的基本操作
  6. 图的基本操作
  7. C++ 哈夫曼编码
  8. C++ 排序的基本操作
  9. C++ 双向链表的基本操作
  10. 顺序表的基本操作
  11. MFC中如何用ADO连接SQL Server 2005
  12. MFC使用ADO连接SQL Server数据库
  13. VC6 MFC中ClassView视图中无法显示某个类的问题
  14. rose生成C++源代码
  15. 解决<compilation debug="true" targetFramework="4.0"> 问题
  16. Cpp
  17. Cpp
  18. LLVM/Clang 介绍
  19. CMake 使用介绍

实验四:栈和队列的基本操作

实验四:栈和队列的基本操作

  1. 采用链式存储实现栈的初始化、入栈、出栈操作。
  2. 采用顺序存储实现栈的初始化、入栈、出栈操作。
  3. 采用链式存储实现队列的初始化、入队、出队操作。
  4. 采用顺序存储实现循环队列的初始化、入队、出队操作。
  5. 在主函数中设计一个简单的菜单,分别测试上述算法。

综合训练:

  1. 利用栈实现表达式求值算法。
  2. 利用栈实现迷宫求解。
  3. 编写c语言程序利用队列打印一个杨辉三角形的前n行。
1
1  1
1  2  1
1  3  3 1
1  4  6 4  1

源码

#include<stdio.h>
#include"xxb.h"
int main()
{
    print();
    int ncase, n1, n2, n3, n4;
    bool flag = true;
    bool f1, f2, f3, f4;
    SqStack s;
    LinkLStack ls;
    SqQueue Q;
    LinkQueue LQ;
    int e;
    while (scanf("%d", &ncase) != EOF)
    {
        f1 = true;
        f2 = true;
        f3 = true;
        f4 = true;

        switch (ncase)
        {
        case 1:
            print1();
            IniLStack(ls);
            while (scanf("%d", &n1) != EOF)
            {
                switch (n1)
                    {
                    case 1:
                    if (IniLStack(ls))
                        printf("链式栈建立成功!\n");
                    else
                        printf("链式栈建立失败!\n");
                    break;
                    case 2:
                    if (PushLStack(ls, e))
                        printf("入栈成功!\n");
                    else
                        printf("入栈失败!\n");
                    break;
                    case 3:
                    if (PopLStack(ls, e))
                        printf("e = %d出栈成功!\n", e);
                    else
                        printf("栈为空!\n");
                    break;
                    case 0:
                    f1 = false;
                    break;
                    default:
                    printf("
                    输入有误,请重新输入!\n");
                    break;
                    }
                if (!f1)
                    break;
                print1();
            }
            break;
        case 2:
            print2();
            while (scanf("%d", &n2) != EOF)
            {
                switch (n2)
                    {
                    case 1:
                    if (Initack(s))
                        printf("顺序栈建立成功!\n");
                    else
                        printf("顺序建立失败!\n");
                    break;
                    case 2:
                    if (Push(s, e))
                        printf("入栈成功!\n");
                    else
                        printf("入栈失败!\n");
                    break;
                    case 3:
                    if (!Pop(s, e))
                        printf("顺序栈为空!\n");
                    else
                        printf("e = %d出栈成功!\n", e);
                    break;
                    case 0:
                    f2 = false;
                    break;
                    default:
                    printf("
                    输入有误,请重新输入!\n");
                    break;
                    }
                if (!f2)
                    break;
                print2();
            }
            break;
        case 3:
            print3();
            while (scanf("%d", &n3) != EOF)
            {
                switch (n3)
                    {
                    case 1:
                    if (InitQueue(LQ))
                        printf("链式队列构造成功!\n");
                    else
                        printf("链式队列构造失败!\n");

                    break;
                    case 2:
                    printf("请输入如队列元素e=");
                    scanf("%d", &e);
                    if (EnQueue(LQ, e))
                        printf("链式队列入列成功!\n");
                    else
                        printf("链式队列入列失败!\n");
                    break;
                    case 3:
                    if (DeQueue(LQ, e))
                        printf("e = %d出队列成功!\n", e);
                    else
                        printf("队列为空!\n");
                    break;
                    case 0:
                    f4 = false;
                    break;
                    default:
                    printf("
                    输入有误,请重新输入!\n");
                    break;
                    }
                if (!f4)
                    break;
                print4();
            }
            break;
        case 4:
            print4();
            while (scanf("%d", &n4) != EOF)
            {
                switch (n4)
                    {
                case 1:
                    if (InitQueue(Q))
                                printf("顺序队列初始化成功!\n");
                    else
                        printf("顺序队列初始化失败!\n");
                    break;
                    case 2:
                    printf("请输入如队列元素e=");
                    scanf("%d", &e);
                    if (EnQueue(Q, e))
                        printf("插入队列成功!\n");
                    else
                        printf("插入失败!\n");
                    break;
                    case 3:
                    if (DeQueue(Q, e))
                        printf("e = %d出队列成功!\n", e);
                    else
                        printf("队列为空!\n");
                    break;
                    case 0:
                    f3 = false;
                    break;
                    default:
                    printf("
                    输入有误,请重新输入!\n");
                    break;
                    }
                if (!f3)
                    break;
                print3();
            }
            break;
        case 0:
            flag = false;
            break;
        default:
            printf("
            输入错误,请重新输入,谢谢!\n");
            break;
        }
        if (!flag)
            break;
        print();
    }
    return 0;
}
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数