【发布时间】:2019-03-07 18:38:40
【问题描述】:
在一本书中遇到了链接堆栈和队列(它不是使用链接列表的堆栈/队列实现)。 它说如果我们只有一个堆栈/队列,则可以顺序表示堆栈/队列。但是,当多个堆栈/队列共存时,则没有有效的方法来顺序表示它们。 下面是给出的代码
#define MAX_STACKS 10 //maximum number of stacks;
typedef struct {
int key;
//other fields.
}element;
typedef struct stack *stackpointer;
typedef struct {
element data;
stackpointer link;
}stack;
stackpointer top[MAX_STACKS];
void push(int i ,element item) {
stackpointer temp;
malloc(temp,sizeof(*temp));
temp->data = item;
temp->link = top[i];
top[i] = temp;
}
我是数据结构的新手。我可以简单解释一下上述概念,即 Linked Stacks/Queues。
【问题讨论】:
-
不清楚你在这里问什么。您是否要求解释如何使用链表来实现堆栈或队列?
-
其实是使用链表的栈实现,但是如何用链表实现两个或多个栈,让所有栈都链接起来。
-
你是什么意思,“所有的堆栈都链接了?”
-
检查 push() 代码,如果你能理解这个概念是什么
-
您对
malloc的调用是错误的。应该是temp = malloc(sizeof(*temp))。你的push很清楚。我仍然不知道您所说的“堆栈已链接”是什么意思。很难理解你在问什么,因为我们没有这本书的上下文。您说“没有有效的方法来顺序表示它们”是正确的:您不能在单个链表中有多个堆栈,并且仍然可以有效地访问它们。你的评论“如果你能理解这个概念是什么”是相当屈尊的。问题是你的问题不清楚,而不是我不聪明。
标签: c data-structures linked-list stack queue