首页 > 其他分享 >Word文档(栈)

Word文档(栈)

时间:2024-09-19 17:05:00浏览次数:1  
标签:Word 压入 ctrl int MAX 栈顶 文档 操作

Word文档(栈)


#include <stdio.h>
#include <string.h>

#define MAX_OPS 10000  // 定义最大操作数
#define MAX_STR_LEN 31 // 定义最大字符串长度

// 栈相关操作
int topA = -1;                     // 栈A的栈顶指针,初始化为-1表示空栈
int topB = -1;                     // 栈B的栈顶指针,初始化为-1表示空栈
char stackA[MAX_OPS][MAX_STR_LEN]; // 栈A用于保存有效的输入操作
char stackB[MAX_OPS][MAX_STR_LEN]; // 栈B用于保存被撤销的操作

// 压栈操作(将字符串压入栈A)
void pushA(const char *str)
{
    strcpy(stackA[++topA], str); // 将字符串复制到栈A并更新栈顶指针
}

// 压栈操作(将字符串压入栈B)
void pushB(const char *str)
{
    strcpy(stackB[++topB], str); // 将字符串复制到栈B并更新栈顶指针
}

// 弹栈操作(从栈A弹出顶部元素并压入栈B)
void popA()
{
    if (topA >= 0)
    {                          // 检查栈A是否为空
        pushB(stackA[topA--]); // 将栈A顶部元素压入栈B并更新栈顶指针
    }
}

// 弹栈操作(从栈B弹出顶部元素并压入栈A)
void popB()
{
    if (topB >= 0)
    {                          // 检查栈B是否为空
        pushA(stackB[topB--]); // 将栈B顶部元素压入栈A并更新栈顶指针
    }
}

// 清空栈B(因为新输入操作时撤销栈B需要清空)
void clearB()
{
    topB = -1; // 通过重置栈顶指针将栈B清空
}

int main()
{
    int n;                      // 用于存储输入的操作次数
    char operation[40];         // 用于存储操作指令("input", "ctrl+z", "ctrl+y")
    char inputStr[MAX_STR_LEN]; // 用于存储输入的字符

    // 输入操作次数
    scanf("%d", &n);

    // 循环处理每一个操作
    for (int i = 0; i < n; i++)
    {
        scanf("%s", operation); // 输入操作类型(input 或者 ctrl+z, ctrl+y)

        // 处理输入操作
        if (strcmp(operation, "input") == 0)
        {
            // 如果是 "input" 操作,读取输入的字符串
            scanf("%s", inputStr);
            pushA(inputStr); // 将输入的字符压入栈A
            clearB();        // 新输入后清空栈B,因为撤销记录不再有效

            // 处理撤销操作
        }
        else if (strcmp(operation, "ctrl+z") == 0)
        {
            popA(); // 将栈A顶部元素撤销到栈B

            // 处理恢复操作
        }
        else if (strcmp(operation, "ctrl+y") == 0)
        {
            popB(); // 将栈B顶部元素恢复到栈A
        }
    }

    // 最后输出栈A中的内容
    if (topA == -1)
    {
        // 如果栈A为空,输出 "No output"
        printf("No output\n");
    }
    else
    {
        // 输出栈A中的每个字符,并在字符之间加空格
        for (int i = 0; i <= topA; i++)
        {
            printf("%s", stackA[i]);
            if (i != topA)
            {
                printf(" "); // 在每两个字符之间添加空格
            }
        }
        printf("\n");
    }

    return 0;
}

标签:Word,压入,ctrl,int,MAX,栈顶,文档,操作
From: https://www.cnblogs.com/yesno233233/p/18420951

相关文章

  • 如何快速搭建一个wordpress个人网站?
    WordPress是全球最流行的开源的博客和内容管理网站的建站平台,具备使用简单、功能强大、灵活可扩展的特点,提供丰富的主题插件。腾讯云轻量应用服务器提供WordPress应用镜像,您可以使用它快速搭建博客、企业官网、电商、论坛等各类网站。说明本文档示例WordPress应用镜像底层基于......
  • 京东云轻量云主机快速搭建WordPress个人网站教程!
    WordPress是使用最广泛的博客和内容管理系统,支持丰富的插件和模板,功能强大,易于扩充功能。您可以使用它快速搭建独立的博客、论坛等网站,也可以做CMS使用。创建轻量云主机访问轻量云主机创建实例页选择WordPress镜像,以及套餐版本、时长等内容,进行下单创建轻量云主机实例查看应用详情......
  • 富文本编辑器CKEDITOR支持从WORD复制粘贴保留格式和图片的插件
    编辑器:ckeditor前端:vue2,vue3.vue-cli后端:asp,jsp,php,asp.net,.netcore功能:复制粘贴word内容图片该说不说最近这个需求挻火的,今天早上又有网友加我QQ,实际上之前QQ号码就已经在网上公开了,但是还是有很多网友找不到,这个说实话就真没办法了,除了公布QQ号码以外我还公开了微信号码......
  • CKEDITOR粘贴WORD文档图片的实例
    编辑器:ckeditor前端:vue2,vue3.vue-cli后端:asp,jsp,php,asp.net,.netcore功能:复制粘贴word内容图片该说不说最近这个需求挻火的,今天早上又有网友加我QQ,实际上之前QQ号码就已经在网上公开了,但是还是有很多网友找不到,这个说实话就真没办法了,除了公布QQ号码以外我还公开了微信号码......
  • java 根据模板导出word文档(poi-tl)
    poi-tl是什么poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性。为什么选择poi-tl方案移植性功能性易用性Poi-tlJava跨平台Word模板引擎,基于ApachePOI,提供更友好的API低代码,准备......
  • Python量化分析2024年最新整理的免费获取股票数据接口集合以及API数据接口说明文档
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • 腾讯云轻量应用服务器搭建WordPress个人博客系统
    WordPress是全球最流行的开源的博客和内容管理网站的建站平台,具备使用简单、功能强大、灵活可扩展的特点,提供丰富的主题插件。腾讯云轻量应用服务器提供WordPress应用镜像,您可以使用它快速搭建博客、企业官网、电商、论坛等各类网站。说明本文档示例WordPress应用镜像底层基于......
  • 易优eyoucms网站请检查数据库连接信息,Access denied for user 'root'@'localhost' (us
    当你遇到“Accessdeniedforuser'root'@'localhost'(usingpassword:YES)”这样的错误时,这意味着数据库系统拒绝了你的连接请求,通常是由于提供的凭据不正确。你可以按照以下步骤来检查和修改数据库连接信息:检查数据库连接信息:确认数据库用户名(通常是root)、密码、以及数......
  • MongoDB 查询文档内的对象属性
    基本查询语法在MongoDB中,查询文档内的对象属性通常使用$操作符和.操作符来实现。下面是基本的查询语法:使用.操作符访问对象属性:如:【对象.属性:值】db.collection.find({"object.property":value})查询对象的嵌套字段如果我们想要查询学生中数学成绩大于80分的学生,可以使用”.”运......
  • 蓝易云服务器 - ubuntu系统服务器安装WordPress教程
    在Ubuntu系统服务器上安装WordPress的教程如下:安装LAMP(Linux+Apache+MySQL+PHP):在终端中运行以下命令安装LAMP组件。sudoapt-getupdatesudoapt-getinstallapache2mysql-serverphplibapache2-mod-phpphp-mysql配置MySQL:运行以下命令配置MySQLroot用户的密码,并进行其......