有人可以帮我理解以下功能中发生的事情吗? 具体使用s1-> top?什么是s1->顶部的功能push& pop& amp;显示?因为如果在函数push中,只要按下数字,s1-> top就会向右移动?那么为什么在显示功能中,它说s1-> top在遍历中是第一个,而在push s1-> top是n右边,而在打印值时,我们需要先在左边然后遍历..why?
Stack createStack() {
Stack s1;
s1 = (Stack) malloc(sizeof(Stack_Head));
s1 - > count = 0;
s1 - > top = NULL;
return s1;
}
Nodeptr createNode(dataitem item) {
Nodeptr temp;
temp = (Nodeptr) malloc(sizeof(Node));
temp - > data = item;
temp - > next = NULL;
return temp;
}
void push(Stack s1, dataitem item) {
Nodeptr temp = createNode(item);
temp - > next = s1 - > top;
s1 - > top = temp;
s1 - > count++;
}
void display(Stack s1) {
Nodeptr ptr = s1 - > top;
while (ptr1 = NULL) {
printf("%d", ptr - > data);
ptr = ptr - > next;
}
printf("\n");
}
void pop(Stack s1) {
Nodeptr temp;
if (isEmpty(s1))
printf("List is Empty");
else {
temp = s1 - > top;
s1 - > top = temp - > next;
temp - > next = NULL;
free(temp);
s1 - > count;
}
int isEmpty(Stack s1) {
return s1 - > top == NULL;
}
答案 0 :(得分:1)
此堆栈结构为LIFO,s1->top
是堆栈的顶部,即最后一个推送元素。每个元素都指向堆栈中的下一个元素。
例如,在这里,push
函数创建一个指向数据的新元素,使这个新元素指向最后插入的元素(它是堆栈中的下一个元素),并放置新元素在堆栈的顶部(s1->top = new_node
,此处的新节点称为temp
)。
答案 1 :(得分:0)
这是stack数据结构的实现。
想想很多书都放在另一个之上。
这将是一堆书籍。
继续书堆类比:
我们从没有任何内容的研究表开始。
我们可以将此状态称为“没有堆栈”
然后我们在一张白纸上写下“Book Stack”并将它放在桌子上。
我们可以将此状态称为“堆栈为空”
让我们把一本数学书放在堆栈上。
现在堆栈有一个项目,即数学书籍,它位于堆栈顶部。
我们'放'另一本书,地理位置在堆栈上。
现在,我们在堆栈上有两本书,Geogrphy书是最重要的。
接下来,我们从堆栈中“删除”地理图书。数学书籍将再次登上榜首。
确定。 该表是您的计算机。 书上写有书堆的纸是一堆。 书籍是可以放在堆栈上的元素。 'Put'被称为'推' '删除'被称为'流行'