資料結構之棧的基本概念

2021-10-08 12:31:02 字數 885 閱讀 6579

棧是允許在一端進行插入或者刪除操作的線性表。它是一種線性表,但是限定這種線性表只能在某一端進行插入和刪除操作。

棧頂(top):線性表允許進行插入刪除的那一端。

棧底(botton):固定的,不允許進行插入和刪除的另一端。

空棧:不含任何元素的空表。

假設某個棧s=,如圖,a1為棧底元素,a5為棧頂元素。由於棧只能從棧頂進行插入和刪除操作,進棧次序依次為a1,a2,a3,a4,a5。而出棧的次序為a5,a4,a3,a2,a1。由此可見,棧的操作特性可以明顯地概況為後進先出(last in first out,lifo)。

注意:我們每接觸到一種新的資料結構型別,都應該分別從其邏輯結構,儲存結構和對資料的運算三個方面著手。當然這也是資料結構的三要素。

當n個不同元素進棧,出棧元素不同排列的個數為c(n,2n)/(n+1)。該數被稱為卡特蘭(catalan)數。

卡特蘭數的運算(排列組合):c(n,2n)/(n+1)  =(2n)!/[(n+1)!(2n-n)!]

initstack(&s):初始化乙個空棧s。

stackempty(s):對乙個棧進行判空。

push(&s,x):進棧,資料進棧之前應該先對棧進行判滿。在棧未滿的時候,使得x成為棧頂元素。

pop(&s,&x):出棧,資料出棧之前應該先對棧進行判空。若棧為非空的時候,則用x返回棧頂元素。

gettop(s,&x):讀棧元素,若棧s非空,則用x返回棧頂元素。

destroystack(&s):銷毀棧,並釋放棧s占用的儲存空間(「&」表示引用呼叫)。

基本概念之資料結構

什麼是資料結構 目前沒有官方的定義。思考 解決問題方法的效率,跟什麼有關呢?解決問題方法的效率,跟資料的組織方式有關 例1 如何在書架上擺放書籍?首先這個問題是不科學的,沒有告訴書架的是什麼樣子的。解決方法 操作2 怎麼找到某本指定的書?方法2 按照書名的拼音字母順序排放 方法3 把書架劃分成幾塊區...

資料結構之棧與佇列(一)基本概念

線性表是 所有元素排成一行 的資料結構。線性表有順序儲存和鏈式儲存兩種實現方式。而棧與佇列是兩種特殊的常用的線性表。1 棧棧是後進後出 lilo 的線性表 只能從棧頂插入或取出。棧有6種基本操作 1 清空clear 2 判空isempty 3 求棧的長度length 4 取棧頂元素peek 5 壓棧...

資料結構一之基本概念

一 列舉法解決問題 q a b c 1000,且a 2 b 2 c 2 a,b,c為自然數 如何求出所有abc可能的組合?a a 0,b 0,c 0 1000,利用三層巢狀。具體程式如下 import time start time time.time for a in range 1000 for...