假设用结点结构为{ data, link }的单链表表示堆栈,且 top 是指向栈顶的指针。若想在栈顶插入一个由指针 s 所指的结点,则应执行下列哪一个操作? ( )
(A) top->link = s ; (B) s->link = top->link ; top->link = s ; (C) s->link = top ; top = s ; (D) s->link = top ; top = top->link
关于栈顶和栈底指针的问题
首先,栈不是数组,而是由链表构成!在操作系统中,栈是向下生长的。栈顶和栈底不是上下决定,而是有入栈方向决定!
带链栈的栈底指针是随栈的操作而动态变化的 这句话为什么是对的?
链式存储的栈结构,栈底指针的动态变化是有严格约束条件的,即:出栈操作中栈内仅有一个元素时或者入栈操作中栈内没有元素时,栈底指针才会变化。随着栈操作而动态变化应该用于描述栈顶指针。栈顶指针不变应该,但是我觉得是栈顶指针随着栈顶元素变化而变化,栈顶指针是表示栈顶元素的位置,占地元素不...
栈和队列都是顺序存取的线性表,但它们对存取位置的限制不同,这句话...
这句话是正确的,这里的顺序存取应该指的是对元素的顺序操作,他们的存取位置的限制是不同的,站只能在一头进行操作,队列只能一边进行存储另一边读取元素,所以说他们的存取位置的限制是不同的。栈又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,...
CList类是作什么用的?
里采用一个单链表来实现堆栈,栈顶指针指向链表的第一个结点,入栈和出栈均在 链表的头进行。该模板类的定义如下: template <class T> class CLinkStackTemp { public: \/\/类的缺省构造函数,生成一个空堆栈 CLinkStackTemp () { top=NULL; }; ~ClinkStackTemp(){}; \/\/析构函数 \/\/定义结点结构 struct ...
链栈中为何不设头指针?
因为栈是后进先出的数据结构,我们不可能直接就对栈底元素进行操作,要想操作栈底元素,必须得先依次让非栈底元素出栈;即使设了头指针,也没有用处,对栈顶元素的操作,与头指针没关系。所以不必设头指针指向栈底元素。
链表结构为什么堆栈不用头结点 而线性表和队列要设头结点 (书上说为了...
因为线性表和队列如果用链表在插入删除时有头部和其他部位的操作差别,需要用头结点来统一操作 而栈只在头部插入删除,所以不必要用头结点
什么是堆栈和指针,请生动的简单的解释一下
堆栈可以用数组存储,也可以用以后会介绍的链表存储。下面是一个堆栈的结构体定义,包括一个栈顶指针,一个数据项数组。栈顶指针最开始指向-1,然后存入数据时,栈顶指针加1,取出数据后,栈顶指针减1。define MAX_SIZE 100 typedef int DATA_TYPE;struct stack { DATA_TYPE data[MAX_SIZE];int to...
堆和栈的区别是啥?
堆和栈的区别:一.堆栈空间分配区别:1.栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;2.堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。二.堆栈缓存方式区别:1.栈使用...
常用数据结构有哪些
3、队列 队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队。4、链表 链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一...
堆栈指针(sp)的作用是什么?在程序设计时,为什么还要对 sp重新赋值...
堆栈指针的作用就是指向栈顶元素的,还可以对栈顶元素进行出栈操作。当堆栈中的元素进行出栈或入栈操作时,都会使栈顶元素发生变化,堆栈指针sp就需要重新赋值,让其指向新的栈顶元素。堆这个存储区存入的数据,是一种特殊的数据结构。所有的数据存入或取出,只能在浮动的一端进行,严格按照“先进后出”...