链表实现的堆栈除了使用数组,我们还可以使用链表来实现堆栈。链表动态分配内存。然而,在这两种情况下,所有操作(如push, pop和peek)的时间复杂度是相同的。 在栈的链表实现中,节点是在内存中不连续维护的。每个节点都包含一个指向堆栈中其直接后继节点的指针。如果内存堆中剩余的空间不足以创建节点,则堆栈被溢出。 ![]() 堆栈中最顶端的节点在其地址字段中总是包含null。我们来讨论一下,每个操作都是在栈的链表实现中执行的。 向栈中添加节点(Push操作)将节点添加到堆栈中称为推操作。在链表实现中,将元素压入堆栈与在数组实现中不同。为了将一个元素压入堆栈,需要执行以下步骤。
时间复杂度:0 (1) ![]() C实现:从堆栈中删除一个节点(POP操作)从栈顶删除一个节点称为流行操作。从stack的链表实现中删除节点与在数组实现中删除节点不同。为了从堆栈中弹出一个元素,我们需要遵循以下步骤: 时间复杂度:0 (n) C实现显示节点(遍历)显示堆栈的所有节点需要遍历以堆栈形式组织的链表的所有节点。为此,我们需要遵循以下步骤。 时间复杂度:0 (n) C实现菜单驱动程序在C实现所有的堆栈操作使用链表:
下一个话题
DS队列
|