關於線性表的一些總結 關於棧(1)

2021-09-25 09:21:11 字數 1385 閱讀 9679

這幾天剛結束了線性表中的學習,乘機總結一下

- 關於線性表

線性表是一種最常見的資料結構,通常運用都是它的特殊形式。例如棧、鍊錶、佇列等等。

乙個線性表是n個具有相同特性的資料元素的有限序列。資料都是以一對一的關係存在。另外,線性表的邏輯結構簡單,便於實現和操作。因此,線性表這種資料結構在實際應用中是廣泛採用的一種資料結構。

- 關於主題——棧(stack)

棧是特殊的一種線性表,它的操作受到限制,只能在棧頂(表尾)進行插入與刪除操作。通常分為鏈棧與順序棧。

標準術語中插入元素稱為進棧(入棧、壓棧),刪除元素叫做出棧。

棧的應用多用於:

函式呼叫、遞迴呼叫的處理

parsing(語法分析——編譯程式的設計等)

reversing data(反轉資料)

中序式(infix)與字首式(prefix)與字尾式(postfix)的相互轉化

(4.這一塊在後面會重點講)

基本演算法與實現

其實雖說stl中存在進行過封裝的函式可以直接呼叫(使用標頭檔案#include進行使用),但還是得講一講我們弱小又可憐的手動操作。

畢竟實際開發中手動更常用,如果是搞競賽的話就無所謂。(我們老師講的,值得考究)

如果有dalao看見這句話請無視我這個蒟蒻。

其實stl用起來真的方便,但還是會產生依賴性。廢話不多,進入基本操作。

用鏈棧進行舉例(順序棧可以自己搜一下,我筆記太亂了)

通過鏈式儲存結構實現的棧稱為鏈棧

建立棧

typedef

struct lnode

*slink;

//棧鏈定義結構

typedef

struct

stack;

棧鏈初始化

void

initstack

(stack &s)

棧鏈的入棧

void

push

(stack &s,elemtype e)

這個我自己**掉了,借用度娘的,如果有錯歡迎指正

linkstack *

pop(linkstack *top)

//判斷是否為空棧n

p=top;

//指向被刪除的棧頂

top=top-

>next;

//修改棧頂指標

free

(p);

return top;

}

大致操作就這麼多,還有其他的,但不常用就沒打上來。

各位大佬如果發現有不足之處歡迎指出與交流,蒟蒻揮揮。

關於線性表的一些簡單應用

關於線性表的基本操作見 利用線性表la和lb分別表示兩個集合a和b,現在要求乙個新的集合,新集合為a與b的並集 要求擴大線性表a,將存在於b中不在a中的元素插入到表a中去。1 include seqlist.h 2 int main1 void 3 8int b 9int la len,lb len...

關於鍊錶的一些總結

1.在鍊錶頭部新增空頭以消除頭部特殊判斷比較常見,用於刪除和新增元素,啞結點的意思就是在head第乙個節點之前設立乙個節點。2.因為鍊錶的操作有限,所以很多時候我們可以把鍊錶中的元素儲存在陣列中,進行操作。3.鍊錶從前往後遍歷元素簡單,但是從後往前遍歷元素確實困難重重,所以我們可以使用棧來儲存資料,...

關於鍊錶的一些操作總結

這是乙個簡單的鍊錶操作問題,在leetcode上面有52.7 的通過率,難度是簡單。但是還是想在這裡基於python做一下總結,順便總結一下鍊錶的各種操作。首先先看一下leetcode上面的題目 反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 高階 你可...