在堆栈中使用“push”和“pop”

2024-03-17

我有一个作业要求我用随机变量填充堆栈并按 FILO 顺序将它们弹出。虽然我设法让它填满堆栈,但它似乎弹出了最后一个元素,而没有弹出任何其他元素。我不知道为什么。任何帮助,将不胜感激。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define STACK_SIZE 10
#define STACK_EMPTY -1
void push(char [], // input/ouput - the stack
          char,  // input - data being pushed onto the stack
          int *, // input/output - pointer to the index of the top of stack
          int); // constant - maximum size of stack
char     // output - data being popped out from the stack
pop(char [], // input/output - the stack
    int *); // input/output - pointer to the index of the top of stack
void push(char stack[],char item,int *top,int max_size){
    stack[*top++] =item;
}
char pop(char stack[],int *top){
    return stack[*top--];
}
int main(){
    char s[STACK_SIZE];
    int s_top = STACK_EMPTY; // Pointer points to the index of the top of the stack

    char randChar = ' ';
    int i = 0;
    int j=0;
    int randNum = 0;

    srand(time(NULL));

    for (i = 0; i < STACK_SIZE; i++){
        randNum = 33 + (int)(rand() % ((126-33)+ 1 ));
        randChar = (char) randNum;
        push(s,randChar, &s_top, STACK_SIZE);

        printf ("Random char: %c\n", randChar);

    }
    printf("-----------\n");

    for(j=STACK_SIZE; j>0; j--){
        printf("Random chars:%c\n", pop(s, &s_top));
    }
    return 0;
}

你的推动应该是

(*top)++;
stack[*top] = value;

即先递增到下一个空位置,然后再插入。这top变量始终指向顶部元素。因此,要压入,先递增,然后分配。要弹出,首先提取顶部的值,然后递减。

注意:上面的行可以合并到stack[++(*top)] = value

在当前代码中,在第一推,你的代码stack[*top++] = item,后增量尝试将该值分配给当前值*top这是-1然后递增,这是错误的。

对于推送例程的这种修改,弹出例程是可以的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在堆栈中使用“push”和“pop” 的相关文章

  • 如何从该 Voronoi 图数据中获取单元格字典?

    使用找到的voronoi delaunay图生成库在这个节目中 http sourceforge net projects mapmanager 这是基于 财富 最初的实施他的算法 http en wikipedia org wiki Fo
  • c++11 正则表达式比 python 慢

    嗨我想了解为什么以下代码使用正则表达式进行分割字符串分割 include
  • 同步执行异步函数

    我对此主题进行了大量搜索 并且阅读了本网站上有关此主题的大部分帖子 但是我仍然感到困惑 我需要一个直接的答案 这是我的情况 我有一个已建立的 Winform 应用程序 但无法使其全部 异步 我现在被迫使用一个全部编写为异步函数的外部库 在我
  • asp.net c# 将数据集中的数据转换为电子邮件正文?

    从数据集到电子邮件正文的最佳方式是什么 我有一个 net 控制台应用程序 用于根据存储过程的结果发送电子邮件通知 并且想知道如何最好地从 SQL 数据转到电子邮件正文 带有颜色和字体的 html 正文是最好的 但纯文本也可以 thanks
  • 将指针转换为浮点数?

    我有一个unsigned char 通常 这指向一块数据 但在某些情况下 指针就是数据 即 铸造一个int的价值unsigned char 指针 unsigned char intData unsigned char myInteger 反
  • 隐式方法组转换陷阱

    我想知道为什么给定代码的输出 在 LinqPad 中执行 void Main Compare1 Action Main Dump Compare2 Main Dump bool Compare1 Delegate x return x Ac
  • 泛型与接口的实际优势

    在这种情况下 使用泛型与接口的实际优势是什么 void MyMethod IFoo f void MyMethod
  • C++ 中的单例和抽象基类

    最近我遇到了关于实现 Singleton 但涉及抽象基类的问题 假设我们有这样的类层次结构 class IFoo it s ABC class Foo public IFoo 我们的单例类定义如下 template
  • 如何“杀死”Pthread?

    我正在学习 Pthreads 并且想知道杀死这样一个对象的最佳方法是什么 在寻找类似的问题后 我无法找到 明确 的答案 但请随时向我指出任何相关问题 我正在使用一个小型客户端服务器应用程序 其中服务器主线程正在侦听套接字上的客户端连接 每次
  • 返回指向 std::vector 中的对象的 a

    我有一个关于返回对向量元素的引用的非常基本的问题 有一个向量vec存储类的实例Foo 我想访问这个向量中的一个元素 不想使用向量索引 我应该如何编码该方法getFoo here include
  • async wait 在调用异步方法时返回 Task> 而不是 List

    我正在尝试了解 async wait 的用法 并且研究了一些博客文章 现在我已经编写了一个测试代码 但它没有按照我期望的方式工作 我有一个返回列表的方法 private List
  • 使用成员作为实现者来实现接口

    我有实现 IA 的 A 类 现在我需要创建也应该实现 IA 的类 B B 类有 A 类的实例作为成员 有什么方法可以定义A的实例实现B类中的IA吗 interfase IA void method1 void method2 void me
  • 替换 JSON 中的转义字符

    我想用空格替换 JSON 字符串中的 字符 我怎样才能做到这一点 我发现从 JSON 字符串中删除所有转义字符的最简单 最好的方法是将字符串传递到正则表达式 Unescape 方法 此方法返回一个没有转义字符的新字符串 甚至删除了 n t
  • 从窗口内容截取屏幕截图(无边框)

    我正在寻找有关如何使用 C 将表单内容保存在位图中的解决方案 我已经尝试过使用 DrawToBitmap 但它捕获了所有带边框的窗口 这就是这段代码的结果 public static Bitmap TakeDialogScreenshot
  • 如何解释“错误C2018:未知字符'0x40'?[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 在编译一些代码时 我收到以下信息 错误 C2018 未知字符 0x40 我想知道如何解决这样的问题 这是我要开始的地方
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • 实体框架代理创建

    我们可以通过使用来停止在上下文构造函数中创建代理 this Configuration ProxyCreationEnabled false 在 EF 4 1 中创建代理有哪些优点和缺点 代理对于两个功能是必需的 延迟加载 导航属性在第一次
  • 将小数格式化为两位或整数

    对于 10 我想要 10 而不是 10 00 对于 10 11 我想要 10 11 没有代码可以实现吗 即通过指定格式字符串类似于 0 N2 decimal num 10 11M Console WriteLine num ToString
  • FakeItEasy 代理方法调用实际实现

    我正在尝试将对假对象的调用代理到实际的实现 这样做的原因是我希望能够使用 Machine Specifications 的 WasToldTo 和 WhenToldTo 它们仅适用于接口类型的伪造 因此 我正在执行以下操作来代理对我的真实对
  • 如何将 char 转换为 unsigned int?

    我有一个字符数组 它实际上用作字节数组 而不是用于存储文本 在数组中 有两个特定字节表示我需要存储到无符号 int 值中的数值 下面的代码解释了设置 char bytes bytes 2 bytes 0 0x0C For the sake

随机推荐

  • 如何从 DSpace 反馈页面的修改版本中获取引用页面(项目)的标题?

    如何从反馈页面的修改版本中获取项目的标题 就像 jspui 中的 推荐此项目 一样 我希望也能生成页面的结果网址 如下所示http example com feedback handle 123456789 123 http example
  • 在pygame中打印用户的输入

    我几乎已经完成了我正在为学校项目制作的一款游戏 但现在我在游戏的一小部分上遇到了困难 我能够获取用户的姓名并使用它来将其写入排行榜 csv 文件 但我想要这样做 以便无论用户键入什么 游戏都会将用户的输入打印到屏幕上 就像您键入时一样在搜索
  • 如何在Python中计算NTLM哈希值?

    如何在 python 中计算密码的 NTLM 哈希值 有任何库或示例代码吗 我想要它用 python 编写 NTLM 强力工具 如 Cain 和 Abel 它的使用其实非常简单hashlib here http docs python or
  • 如何从 Sass 样式表中仅导入变量和 mixin?

    我正在使用 Zurb Foundation 4 S CSS 框架 并且遇到了大量重复样式的问题 这是因为在每个文件中我 import foundation 中 Foundation 中的所有样式也会导入 规则body row button和
  • Visual Studio 2012 - 从解决方案资源管理器中隐藏文件夹?

    是否可以在 Visual Studio 2012 解决方案资源管理器窗口中隐藏文件夹 我有多个不打算使用的文件夹 文件 它们只是让界面变得混乱 而且很难找到东西 您可以切换 显示隐藏文件 但实际上无法隐藏任何文件 这似乎很不合逻辑 Exam
  • Plone - 在页面中何处存储图像和文件附件的最佳实践?

    我们正在使用 Plone 4 1 3 构建一个 Intranet 网站 并想知道是否有 Plone 最佳实践来存储附加到页面的文件和图像 我们的内联网更像是一个协作站点 用户可以在其中发布新闻项目和其他文章 因此 用户将插入图像 使用 Ti
  • Taskkill /f 不会终止进程

    当我从 VS 启动 VS 的实验实例进行调试并停止调试 有时直接从父 VS 时 zombile devenv exe 进程仍在运行 我无法杀死它 它保留了我的许多 dll 当我以管理员身份登录到这台 64 位 Win7 机器时 我希望能够终
  • 防止点击文件输入的标签打开文件浏览器

    我有一个用户可以上传图像的表单 我正在使用
  • 关于python中的struct.unpack()

    级别 初级 我目前正在使用原始套接字使用 python 来开发嗅探器 我有一个关于 struct 模块提供的 unpack 中使用的格式说明符的一般性问题 当我们使用此方法根据指定的格式说明符解包数据时 我见过很多嗅探器程序使用 unpac
  • 亚马逊产品 API - 寻找基本概述和信息

    最近使用 ebay API 后 我本以为从亚马逊请求信息会如此简单 但事实似乎并非如此 似乎没有一个很好的网页来解释基础知识 首先 该服务叫什么 我认为旧名称已被放弃 缩写词 AWS 随处可见 但这不是一个涵盖他们的云计算和其他 20 种服
  • 列出所有 Google 地图标记图像 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 您是否经常使用谷歌的图像标记或将其复制到您的服务器 我在哪里可以从谷歌获取可用标记的所有图像列表 图像列表 例如 var pinIcon
  • php 可以查询之前查询的结果吗?

    在某些语言 例如 ColdFusion 中 您可以对先前查询的结果集运行查询 是否可以在 php 中做类似的事情 以 MySQL 作为数据库 我有点想做 rs1 do query SELECT FROM animals WHERE type
  • 如何强制网站 DNS 刷新?

    我正在将我的 Web 应用程序移动到另一台服务器 并在接下来的几天内刷新 DNS 以指向新的 IP 位置 不幸的是 一些浏览器和 SO 保留了 DNS 缓存 这将使用户指向旧的 IP 位置 有些用户是新手 他们不会手动刷新 DNS 缓存 我
  • 如何将“手动创建”资源添加到cloudformation模板

    我最初在 AWS 中手动创建了所有资源 现在 我尝试使用 CloudFormation SAM 模板来创建所有新资源 有什么方法可以将我所有的旧 手动创建 资源转移到这个 CF 模板中 然后使用这个 CF 来修改那些旧资源 现在可以通过 A
  • Python PyAutoGUI 返回“ImageNotFoundException”,但“ except”不将其识别为异常

    在以前版本的 pyautogui 中 当找不到图像时 返回值为 None 所以我曾经用以下方式处理它except TypeError 但自从更新 版本 0 9 41 以来 它不起作用 因为它返回 ImageNotFoundException
  • 如何将浮点数限制为略低于限制?

    功能类似于numpy random uniform http docs scipy org doc numpy reference generated numpy random uniform html返回两个边界之间的浮点值 包括第一个边
  • ' 转换为 'const v8::String::Utf8Value' aria-label='无法将参数 1 从 'v8::Local' 转换为 'const v8::String::Utf8Value'> 无法将参数 1 从 'v8::Local' 转换为 'const v8::String::Utf8Value

    我正在尝试运行以下两个命令 npm install npm audit fix 在VS Code中报如下错误时 error C2664 v8 String Utf8Value Utf8Value const v8 String Utf8Va
  • Tomcat 上的 JAX-WS Web 服务,无需 sun-jaxws.xml

    我试图在 Tomcat 上部署基于 JAX WS 的 Web 服务时尽量减少所需的配置 随着Servlet 3 0的引入 Tomcat 7 支持 web xml可以扔掉 但还是有sun jaxws xml This 博客文章 https w
  • “有选择地”与git合并

    我想要一个 git 存储库 其中有一个用于开发的分支和一个用于部署的分支 我有我的项目需要的几个配置和数据库文件 我希望部署分支不要为我的项目提供任何配置或数据库文件 但我希望将这些文件的版本保留在我的开发分支中以便能够进行测试 当将开发分
  • 在堆栈中使用“push”和“pop”

    我有一个作业要求我用随机变量填充堆栈并按 FILO 顺序将它们弹出 虽然我设法让它填满堆栈 但它似乎弹出了最后一个元素 而没有弹出任何其他元素 我不知道为什么 任何帮助 将不胜感激 include