資料結構day1 棧

2021-09-24 19:24:24 字數 1413 閱讀 8027

1.什麼是棧

後進先出(lifo)的線性表,僅能在一邊進出。

2.實現方式有:順序棧和鏈式棧

順序棧的實現:將陣列的尾部當作棧頂,在棧頂尾部進行pop和push操作只需要常數時間。

//順序棧的實現

public class astack implements stackadt

astack()

void init(int size)

@override

public void clear()

@override

public void push(object item)

else

} @override

public object pop()

else

return null;

} @override

public object topvalue()

else

return null;

} @override

public boolean isempty()

}

相對增長棧:

當兩個棧有著此消彼長型關係時,可將兩個棧用同乙個陣列實現,相對生長,節省空間。

鏈式棧的實現方式:

//鏈式棧的實現

public class lstack implements stackadt

lstack()

void init()

@override

public void clear()

@override

public void push(object item)

@override

public object pop()

else

return null;

} @override

public object topvalue()

else

return null;

} @override

public boolean isempty()

}

用棧模擬遞迴(遞迴並不能總可用被迭代代替)

例如,漢諾塔的遞迴程式

//漢諾塔的遞迴實現

void toh(int n,int start,int goal,int temp)

用棧模擬:

//棧模擬的漢諾塔實現

void tohinstack(int n,int start,int goal,int temp)

else if(it.num>0)

} }

注意的是操作入棧的順序和原本呼叫的順序是相反的,因為棧是先進後出的線性表。

資料結構 day1

資料結構往往跟演算法有很大關係 ep1 圖書館 ep2 遞迴函式很有可能導致記憶體溢位 因為每一次遞迴都在記憶體裡新建了乙個 程式 如果遞迴次數過多,那麼這個程式占用的空間會很恐怖 ep3 多項式 正常演算法和秦九韶演算法的比較。秦九韶演算法有效的減少了乘法的量級 clock 獲得從程式開始到呼叫這...

資料結構和演算法 Day 1

資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。程式設計 資料結構 演算法 簡單來說,資料結構研究的是一種關係,就是資料元素相互之間存在的一種或多種特定關係的集合。傳統上,資料結構分為邏輯結構和物理結構 邏輯結構是指資料物件中的資料元素之間的相互關係...

資料結構和演算法 day1

這是計算機必修課,很搞腦子,但要讓程式設計能力有質的飛躍,而不是簡單呼叫各種現成api去實現各種功能,卻不懂內部原理,就必須學習這門課,自己設計結構和演算法。3.資料結構和演算法為什麼要一起學?二 資料結構分為邏輯結構和物理結構 三 程式 資料結構 演算法 演算法是解決特定問題的步驟描述,表現為有限...