這幾天剛結束了線性表中的學習,乘機總結一下
- 關於線性表
線性表是一種最常見的資料結構,通常運用都是它的特殊形式。例如棧、鍊錶、佇列等等。
乙個線性表是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 高階 你可...