栈和队列都是顺序存取的线性表,但它们对存取位置的限制不同,这句话对吗?为什么?
这句话是正确的,这里的顺序存取应该指的是对元素的顺序操作,他们的存取位置的限制是不同的,站只能在一头进行操作,队列只能一边进行存储另一边读取元素,所以说他们的存取位置的限制是不同的。
栈又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。
扩展资料:
栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
堆栈帧一般包含如下几方面的信息:
1、函数的返回地址和参数。
2、临时变量,包括函数的非静态局部变量以及编译器自动生成的其他临时变量。
循环队列的入队算法如下:
1、tail=tail+1。
2、若tail=n+1,则tail=1。
3、若head=tail,即尾指针与头指针重合了,表示元素已装满队列,则作上溢出错处理。
4、否则,Q(tail)=X,结束(X为新入出元素)。
进栈(PUSH)算法
1、若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作2)。
2、置TOP=TOP+1(栈指针加1,指向进栈地址)。
3、S(TOP)=X,结束(X为新进栈的元素)。
退栈(POP)算法
1、若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作2)。
2、X=S(TOP),(退栈后的元素赋给X)。
3、TOP=TOP-1,结束(栈指针减1,指向栈顶)。
参考资料来源:百度百科-队列
参考资料来源:百度百科-栈
正确的。
前面的一半句话似乎有点问题,所谓顺序存取一般专门指的是链式存储,只能依次访问,而栈和队列只是限制了存取点,从逻辑上说并不能依次访问其各个元素。
注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表,存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点。
扩展资料:
线性表的相邻元素之间存在着序偶关系。如用(a1,…,ai-1,ai,ai+1,…,an)表示一个顺序表,则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。当i=1,2,…,n-1时,ai有且仅有一个直接后继,当i=2,3,…,n时,ai有且仅有一个直接前驱。
参考资料来源:百度百科-线性表