我需要我的堆栈来接收 int 和 char 数组(字符串)。有什么想法吗?我知道目前我有使用整数操作的 pop 和 push 命令。不同类型的结构会更好吗?我似乎记得某些结构能够接受不同的论点。如果我定义不同的函数来处理 char 数组会有帮助吗?我知道你不能在 c 中超载。我的另一个想法是让堆栈接收字符串并根据需要在字符串和 int 之间进行转换,但这似乎有点冒险在两种变量类型之间进行常量切换。
typedef struct Stack
{
int capacity; // max # of elements the stack can hold
int size; // current size of the stack
int *elements; // the array of elements
}Stack;
Stack * createStack(int maxElements)
{
Stack *S;
S = (Stack *)malloc(sizeof(Stack));
S->elements = (int *)malloc(sizeof(int)*maxElements);
S->size = 0;
S->capacity = maxElements;
return S;
}
// STACK COMMANDS
void pop(Stack *S)
{
if(S->size==0)
{
printf("Stack is Empty\n");
return;
}
else
{
S->size--;
}
return;
}
int top(Stack *S)
{
if(S->size==0)
{
printf("Stack is Empty\n");
exit(0);
}
return S->elements[S->size-1];
}
void push(Stack *S,int element)
{
if(S->size == S->capacity)
{
printf("Stack is Full\n");
}
else
{
S->elements[S->size++] = element;
}
return;
}