gpt4 book ai didi

c - 了解堆栈数组实现 (C)

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:38 24 4
gpt4 key购买 nike

我完全理解堆栈应该做什么(后进先出)。这只是让我感到困惑的堆栈的一部分。

typedef struct dynArrStruct
{
char *location; //element
int length; //max size
int currSize; //top
}dynArr;


dynArr a; //declared in main
//sorry this is an assignment and I try to refrain from posting my full code
//on here b/c of potential cheaters

我使用这段代码作为我的堆栈。

基本上我的程序应该找到平衡的字符:'{'、'('、'<'、'[' 和它们的结束对应部分。

简而言之,每次我找到左括号时,我都会将它压入堆栈。我一直将它插入堆栈,直到找到一个右括号,一旦找到一个右括号,我就需要弹出堆栈。

我感到困惑的是变量 char* location。

假设我的字符串是“()”

在 GDB 中:

如果我读入“(”,我将它压入堆栈。如果我读入“)”,我将它弹出。

当我这样做时:p a->location 它会打印出“()”

我只是想知道我是否应该在每次弹出堆栈时从 a->location 的值中删除“()”,或者弹出与 a->location 无关的堆栈?

换句话说,它应该在弹出后打印出“”吗?

如果这个问题没有意义,我提前道歉

最佳答案

由于您尚未发布代码,因此很难确定,但我怀疑您将指针(例如 char * location)与其指向的内容混淆了。当前指向字符串“()”的指针将在 gdb 中打印为 (),但指向(堆栈顶部)的字符将只是“(”。

如果您至少发布部分代码,将更容易更具体。

关于c - 了解堆栈数组实现 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14994021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com