Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ pop是如何使用链表在堆栈中工作的?_C++_Data Structures_Linked List_Stack - Fatal编程技术网

C++ pop是如何使用链表在堆栈中工作的?

C++ pop是如何使用链表在堆栈中工作的?,c++,data-structures,linked-list,stack,C++,Data Structures,Linked List,Stack,在这里的pop函数中,在top被分配给temp之后,其写入的top=top->link,但是top=top->link如何使其指向其后节点 top=top->link意味着向前移动并指向其前面的节点,在这里它应该为NULL 编辑:不能添加到pop中。现在让问题更具体一点,你怎么可能是对的。Pop here将删除第一个对象,并且现在将top设置为NULL,即使堆栈中有一些对象。要解决这个问题,您应该做的是更改链接方向-这意味着每个对象都将指向较低的对象。在这种情况下,移除顶部时,您将能够检索堆栈中

在这里的pop函数中,在top被分配给temp之后,其写入的top=top->link,但是top=top->link如何使其指向其后节点

top=top->link意味着向前移动并指向其前面的节点,在这里它应该为NULL


编辑:不能添加到pop中。现在让问题更具体一点,你怎么可能是对的。Pop here将删除第一个对象,并且现在将top设置为NULL,即使堆栈中有一些对象。要解决这个问题,您应该做的是更改链接方向-这意味着每个对象都将指向较低的对象。在这种情况下,移除顶部时,您将能够检索堆栈中较低的下一个对象

更改:

temp->data=num;
temp->link=top;
top=temp;
致:

并为空堆栈添加一个特例,其中top->link=temp;将不合法,如:

if(top==NULL){
    temp->data=num;
    top=temp;
    top->link=NULL;
}
编辑:

你的逻辑应该是这样的:

空堆栈只有一个空的\u ptr top

推送:如果堆栈为空-top现在是新元素,它的链接为null\u ptr,否则-top的链接现在是新元素,top变成新元素,新元素的链接为null\u ptr


弹出:如果堆栈为空,则不执行任何操作,否则-打印top的数据,将top另存为temp,top成为top的链接堆栈中较低的元素,打印temp的数据并删除temp,您是对的。Pop here将删除第一个对象,并且现在将top设置为NULL,即使堆栈中有一些对象。要解决这个问题,您应该做的是更改链接方向-这意味着每个对象都将指向较低的对象。在这种情况下,移除顶部时,您将能够检索堆栈中较低的下一个对象

更改:

temp->data=num;
temp->link=top;
top=temp;
致:

并为空堆栈添加一个特例,其中top->link=temp;将不合法,如:

if(top==NULL){
    temp->data=num;
    top=temp;
    top->link=NULL;
}
编辑:

你的逻辑应该是这样的:

空堆栈只有一个空的\u ptr top

推送:如果堆栈为空-top现在是新元素,它的链接为null\u ptr,否则-top的链接现在是新元素,top变成新元素,新元素的链接为null\u ptr


pop:如果堆栈为空,则不执行任何操作,否则-打印top的数据,将top另存为temp,top成为top的链接堆栈中较低的元素,打印temp的数据并删除temp。此实现是正确的。你不需要改变任何事情

推力器的工作原理 当我们试图在这个堆栈中添加一个元素时,我们会创建一个新节点,并使其成为链接列表的头部。因此,添加的最后一个元素将始终是链接列表的标题

Pop的工作原理
当我们尝试弹出一个元素时,我们只需执行top-=top->link。这意味着我们刚刚将head节点更改为堆栈中添加的上一个元素。

此实现是正确的。你不需要改变任何事情

推力器的工作原理 当我们试图在这个堆栈中添加一个元素时,我们会创建一个新节点,并使其成为链接列表的头部。因此,添加的最后一个元素将始终是链接列表的标题

Pop的工作原理
当我们尝试弹出一个元素时,我们只需执行top-=top->link。这意味着我们刚刚将head节点更改为堆栈中添加的上一个元素。

否,但我要问的是,如果将coutlink设置为NULL,则应该在将NULL指定给top之前进行打印。pop函数应该是这样的:if top!=空打印顶部。将top->link分配给top您误解了:OP的代码是正确的。没有什么需要改变的。op问的是它为什么工作,不是关于一个问题。不,但我问的是,如果你把coutlink设置为NULL,你应该在将NULL设置为top之前打印。pop函数应该是这样的:if top!=空打印顶部。将top->link分配给top您误解了:OP的代码是正确的。没有什么需要改变的。op是问它为什么有效,而不是问一个问题。@FirstStep:你在说什么?链接指向下方。顶部->链接指向下一个元素,即弹出后的新顶部元素。@第一步:你在说什么?链接指向下方。顶部->链接指向下一个元素,即弹出后的新顶部元素。