【发布时间】:2021-09-13 16:48:02
【问题描述】:
我目前正在处理一项作业,其中一个问题涉及堆栈结构。我找到了一个合适的结构(单链表结构),但是我不确定如何显示堆栈中的每个元素,因为它使用了多个结构。
struct stack_entry {
char *data;
struct stack_entry *next;
};
struct stack_t {
struct stack_entry *head;
size_t stack_size;
};
struct stack_t *newStack(void) {
struct stack_t *stack = malloc(sizeof *stack);
if (stack) {
stack->head = NULL;
stack->stack_size = 1;
}
return stack;
}
到目前为止,我已经编写了这个函数 - 但是它当然不起作用,至少我很难说。
void display(struct stack_t *stack) { //displays all of the entries of the stack
for (int i = 0; i < stack->stack_size; i++) {
char *tmp = stack->head[i].data;
printf("%s ", tmp);
}
}
【问题讨论】:
-
这个
stack看起来很像linked list -
无关:为什么新创建的
stack_t的大小为1而不是0? -
部分问题指出堆栈必须始终包含至少一个条目,因此为什么将大小初始化为 1 而不是 0。我知道乍一看可能会令人困惑哈哈哈
-
确实如此。 :-) 如果它必须包含至少一个条目,您可能还应该创建那个条目?
-
另外,感谢您的快速回复和回答;它对我帮助很大:-)