选项ABCD均错误,第j个输出元素应为i-j+1。
栈是一种先进后出的数据结构,也就是说如果入栈顺序为123,那么出栈顺序则为321。
题目中栈的输入序列为1,2,3,...,n,该序列是等差为1的递增序列,那么出栈顺序应该为n,n-1...,3,2,1,也就是等差为1的递减序列。那么当输出序列的第一个元素为i时,利用等差数列公式an=a1+(n-1)*d可知,第j个元素应为aj=i+(j-1)*(-1)=i-j+1。
扩展资料
栈是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先存储的数据在栈底,最后存储的数据在栈顶,而当要读取数据时,最先读取的数据则是栈顶的数据,最后读取栈底的数据,也就是所谓的先进后出原则。
相对的,队列是一种先进先出的数据结构。它只允许在表的前端进行删除操作,在表的后端进行插入操作。所以最先存储在队列中的数据也将最先被读取,也就是所谓的先进先出原则。
参考资料来源:百度百科-栈
参考资料来源:百度百科-等差数列公式
应该是不确定的;
因为他没说要小次性全进完,也没说要一次性全出完,只要进入的序列不变就行了。所以不确定的
设 I=2,J=3;
进入怕方法有好多种,出来的方法也有好多种的,
1进,1出,2进,2出,3进,4 进,4出,3 出;
。。。。。。。。。。。
i没有其他限制条件,即i之后的进栈出栈操作以及操作的顺序虽然符合"后进先出"规则,但仍是无法判断的
举个例子
i=3,j=2即"出栈第一个元素是3,则求第2个出栈元素是"
push(1) push(2) push(3) pop()之后开始不同
1.我可以一直push直到任意的数,然后再出栈,比如:push(4)...push(666) pop()
这个时候就是666
2.我也可以直接pop() ,这个时候就是2了
我是这么理解的,如有错误,欢迎指正
选D不确定,比如i是1,j是2那么第j个也就是第二个输出的可能是2,3...n中的任何一个数,以100为例,1出来之后,往栈里放入2,3...100,然后让100出栈,那么100就成了第2个出栈的元素。
dsd