mirror of
https://github.com/krahets/hello-algo.git
synced 2026-02-08 21:34:17 +08:00
Bug fixes to C code.
This commit is contained in:
@@ -16,50 +16,56 @@ typedef struct {
|
||||
|
||||
/* 构造函数 */
|
||||
ArrayStack *newArrayStack() {
|
||||
ArrayStack *s = malloc(sizeof(ArrayStack));
|
||||
ArrayStack *stack = malloc(sizeof(ArrayStack));
|
||||
// 初始化一个大容量,避免扩容
|
||||
s->data = malloc(sizeof(int) * MAX_SIZE);
|
||||
s->size = 0;
|
||||
return s;
|
||||
stack->data = malloc(sizeof(int) * MAX_SIZE);
|
||||
stack->size = 0;
|
||||
return stack;
|
||||
}
|
||||
|
||||
/* 析构函数 */
|
||||
void delArrayStack(ArrayStack *stack) {
|
||||
free(stack->data);
|
||||
free(stack);
|
||||
}
|
||||
|
||||
/* 获取栈的长度 */
|
||||
int size(ArrayStack *s) {
|
||||
return s->size;
|
||||
int size(ArrayStack *stack) {
|
||||
return stack->size;
|
||||
}
|
||||
|
||||
/* 判断栈是否为空 */
|
||||
bool isEmpty(ArrayStack *s) {
|
||||
return s->size == 0;
|
||||
bool isEmpty(ArrayStack *stack) {
|
||||
return stack->size == 0;
|
||||
}
|
||||
|
||||
/* 入栈 */
|
||||
void push(ArrayStack *s, int num) {
|
||||
if (s->size == MAX_SIZE) {
|
||||
void push(ArrayStack *stack, int num) {
|
||||
if (stack->size == MAX_SIZE) {
|
||||
printf("stack is full.\n");
|
||||
return;
|
||||
}
|
||||
s->data[s->size] = num;
|
||||
s->size++;
|
||||
stack->data[stack->size] = num;
|
||||
stack->size++;
|
||||
}
|
||||
|
||||
/* 访问栈顶元素 */
|
||||
int peek(ArrayStack *s) {
|
||||
if (s->size == 0) {
|
||||
int peek(ArrayStack *stack) {
|
||||
if (stack->size == 0) {
|
||||
printf("stack is empty.\n");
|
||||
return INT_MAX;
|
||||
}
|
||||
return s->data[s->size - 1];
|
||||
return stack->data[stack->size - 1];
|
||||
}
|
||||
|
||||
/* 出栈 */
|
||||
int pop(ArrayStack *s) {
|
||||
if (s->size == 0) {
|
||||
int pop(ArrayStack *stack) {
|
||||
if (stack->size == 0) {
|
||||
printf("stack is empty.\n");
|
||||
return INT_MAX;
|
||||
}
|
||||
int val = peek(s);
|
||||
s->size--;
|
||||
int val = peek(stack);
|
||||
stack->size--;
|
||||
return val;
|
||||
}
|
||||
|
||||
@@ -92,11 +98,10 @@ int main() {
|
||||
|
||||
/* 判断是否为空 */
|
||||
bool empty = isEmpty(stack);
|
||||
printf("栈是否为空 = %s\n", empty ? "true" : "false");
|
||||
printf("栈是否为空 = %stack\n", empty ? "true" : "false");
|
||||
|
||||
// 释放内存
|
||||
free(stack->data);
|
||||
free(stack);
|
||||
delArrayStack(stack);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user