⑴ 棧的順序儲存空間中,元素個數怎麼算
因為棧頂在高位,也就是m+1處,進棧時top向低下標擴展,因此當top為m時,有1個元素;為m -1 時,有2個元素;為20時,有m- 20 +1 = m-19個元素在棧中。
棧(stack)又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。
向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
(1)棧的存儲空間基本運算例題講解擴展閱讀:
1、進棧(PUSH)演算法
① 若TOP≥n時,則給出溢出信息,作出錯處理(進棧前首先檢查棧是否已滿,滿則溢出;不滿則作②);
② 置TOP=TOP+1(棧指針加1,指向進棧地址);
③ S(TOP)=X,結束(X為新進棧的元素);
2、退棧(POP)演算法
① 若TOP≤0,則給出下溢信息,作出錯處理(退棧前先檢查是否已為空棧, 空則下溢;不空則作②);
② X=S(TOP),(退棧後的元素賦給X):
③ TOP=TOP-1,結束(棧指針減1,指向棧頂)。
⑵ 設棧的順序存儲空間為S(1:m),初始狀態為TOP=m+1。現經過一系列入棧與退棧運算後,
棧的順序存儲空間為S(1:50),初始狀態為top=0。現經過一系列入棧與退棧運算後,top=20,則棧頂-棧底=20-0=20個元素。
⑶ 設棧的存儲空間為S(1:50),初始狀態為top=0,現經過一系列正常的入棧與退棧操作後,top=
棧的順序存儲空間為S(1:50),初始狀態為top=0。
top可以理解為如果要再放入一個元素,這個元素存放的位置為top—1,top=0,top—1=—1,顯然不可能在存放下一個元素,所以初始狀態為滿,經過一系列操作,top為30,同理,如果要再存放一個元素,位置為30—1=29,所以現在30是有元素的,30到50,一共為21個元素,所以答案為21。