爱启航考研 计算机
启航官网 > 计算机 > 计算机备考 > 每日一练 > 文章
分享至

计算机考研每日一练:第二天

关键字: 计算机 考研 每日一练 时间:2019.01.16

栈的存储与操作

由于栈是一个特殊的表,可以用一维数组来实现栈。同时设立指针t(称为栈顶指针)来指示栈顶元素的当前位置。

我们用一个数组s[1..m]来表示一个栈时,将栈底固定在数组的底部,即s[1]为最早入栈的元素,并让栈向数组上方(下标增大的方向)扩展。当t=0时,表示这个栈为一个空栈。当t=m时,表示这个栈已满。

可以用下列方式定义栈:

const

m=栈表目数的上限;

type

stack=array[1..m] of stype; {栈的数据类型}

var

s:stack;

t:integer; {栈顶指针}

进栈、出栈操作的过程和函数(假设栈元素的数据类型为整型):

(1)进栈过程(push)

①若t≥m时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);

②置t=t+1(栈指针加1,指向进栈地址);

③S(t)=x,结束(x为新进栈的元素);

procedure push(var s:stack; x:integer;var t:integer);

begin

if t=m then writeln('overflow')

else

begin

t:=t+1;s[t]:=x;

end

end;

(2)退栈函数(pop)

①若t≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);

②x=s(t),(退栈后的元素赋给x);

③t=t-1,结束(栈指针减1,指向栈顶)。

function pop(var s:stack;var t:integer):integer;

begin

if t=0 then writeln('underflow')

else

begin

pop:=s[t];t:=t-1;

end

end;

(3)读栈顶元素函数(top)

function top(var s:stack; t:integer):integer;

begin

if t=0 then writeln('underflow')

else

top:=s[t];

end;

【考研党必备学习资料包】:考研真题+免费择校择专业+免费考研复习规划,更有考研课程优惠券等你来加购~名额有限立即领取【领取链接】

【启航教育考研辅导课程推荐】:面授课集训营(冲刺密训十一特训),专业课一对一辅导考研网课全程班包含公共课以及专业课,这些课程中都会配有内部讲义以及辅导书和资料,同时会有教研教辅双师模式对大家进行教学以及督学,并配有24小时答疑和模拟测试等,具体详情可直接咨询在线客服老师。


来源:启航考研 责任编辑:yulaoshi
热门活动