我完全理解堆栈应该做什么(后进先出)。这只是让我感到困惑的堆栈的一部分。
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* 位置。
假设我的字符串是“()”
在 GDB 中:
如果我读入'('我将它推入堆栈......如果我读入')'我会弹出它。
当我这样做时: p a->location 它会打印出“()”
我只是想知道每次弹出堆栈或弹出与a->位置无关的堆栈时,我是否应该从a->位置的值中删除“()”?
换句话说,它应该在弹出后打印出“”吗?
如果这个问题没有意义,我提前道歉