入栈的顺序规律是排在前面的先进,排在后面的后进。
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。
向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
任何出栈元素后面的元素必须满足两条规则
1、在原序列(也就是入栈序列)中顺序比出栈元素小的,必须是逆序。
2、在原序列(也就是入栈序列)中顺序比出栈元素大的,顺序无所谓。
3、出栈元素表示的是出栈后面的所有元素。
很多人都误解这个理念从而对栈产生困惑。而系统栈在计算机体系结构中又起到一个跨部件交互的媒介区域的作用 即 cpu 与内存的交流通道 ,cpu只从系统给我们自己编写的应用程序所规定的栈入口线性地读取执行指令, 用一个形象的词来形容它就是pipeline(管道线、流水线)。cpu内部交互具体参见 EU与BIU的概念介绍。
栈这种数据结构,遵循先进后出,先进在栈底,后进在栈顶。
入栈的同时是否允许出栈,如果是数据全部入栈后才能出栈,入栈顺序为1234,那么出栈顺序只能是4321。如果入栈的同时允许出栈,那么出栈的顺序队列就有好几个。
基本算法
1、进栈(PUSH)算法
(1)若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作(2))。
(2)置TOP=TOP+1(栈指针加1,指向进栈地址)。
(3)S(TOP)=X,结束(X为新进栈的元素)。
2、退栈(POP)算法
(1)若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈,空则下溢;不空则作(2))。
(2)X=S(TOP),(退栈后的元素赋给X)。
(3)TOP=TOP-1,结束(栈指针减1,指向栈顶)。