例如,如果我在C中定义了一个Stack ADT,通常我的类型定义 - 使用基于数组的实现 - 就像这样:
typedef char StackEntry;
typedef struct stack {
int top;
StackEntry entry[MAXSTACK];
} Stack;
如何使我的堆栈能够为一个堆叠的字符和另一个堆栈 - 在同一个程序中 - 例如处理整数?
答案 0 :(得分:0)
您可以使用使用元素大小初始化的堆栈结构,并以字节为单位保留内存块以存储元素:
sqlalchemy.exc.InternalError: (psycopg2.InternalError) ALTER EXTERNAL TABLE cannot run inside a transaction block
答案 1 :(得分:0)
使用宏,例如
#define STACK_TYPE(type) struct { int top; type entry[MAXSTACK]; }
您最终可能会使用宏进行堆栈操作,例如push / pop:
#define STACK_PUSH(stack, value) \
do { if ( (top) < MAXSTACK ) (stack).entry[(stack).top++] = (value); } while (0)
在大多数情况下,您不需要将堆栈类型作为宏参数传递,因为相同的语法适用于所有堆栈。
样本用法:
STACK_TYPE(int) mystack = { 0 };
STACK_PUSH(mystack, 5);
显然,你可以通过很多不同的方式来处理细节。