簡單來說像這樣的猶如一條線的結構就屬於線性結構常見有我們熟知的陣列還有單鏈表。
在學資料結構之前我們對陣列就很了解了,最簡單的就是一維陣列,一維陣列也是最簡單的線性結構。
優點:
1.訪問方便,之間訪問下標對應元素即可
2.寫起來也方便用起來也方便看著也舒服
缺點:
1.在中間位置插入元素時,其後所以元素都需要後移,造成時間的大量浪費
2.有時不能準確確定需要開多大,對記憶體造成浪費
鍊錶在學資料結構之前我們是比較陌生的,但資料結構中用的就比較多了,特別是後面樹和圖。
有點
1.插入刪除方便
2.需要時可以申請記憶體,不需要的結點可以隨時刪除,比較靈活
缺點
1.操作較為複雜
2.涉及到指標,可能理解起來有些難,而且很容易弄錯
鍊錶的建立:
#include
#include
// 申請記憶體必備標頭檔案
struct lb
lb;intmain()
雙線鍊錶與迴圈鍊錶,則要在結構體中加入乙個指向前乙個元素的指標。
#include
#include
struct lb
;int
main()
q=p;
} q->next=
null
; tail=q;
tail->next=head;
head->before=tail;
}
顧名思義,就像我們去食堂排隊吃飯一樣,誰先到誰就先買到飯然後離開
佇列:先進先出
新增元素與棧相同,都是新增在末尾,而彈出元素則是彈出首位
我學到的演算法bfs就是佇列運用的很好例子
此題就運用bfs演算法
如下為核心部分入隊操作:
head表示隊首,tail表示隊尾
每次有新成員加入,則隊尾tail下標後移;假如有人出隊,則刪除head當前位置元素,然後將head後移。
while
(head < tail)}if
(flag)
break
; head++
;}
棧:先進後出新增元素與佇列相同,都是新增在末尾,而彈出元素則是彈出尾位我們平常用瀏覽器
退位鍵就是典型的棧,我們最先點進的網頁我要退到此網頁,我們則需要退回到最後乙個網頁(模擬一下就知道了),這就是典型的先進後出。
還有著名的逆波蘭序列也運用了棧知識。
head表示隊首,tail表示隊尾
每次有新成員加入,則隊尾tail下標後移;假如有人出棧,則刪除tail當前位置元素,然後將tail前移。
第二講 線性結構
1,順序儲存 線性表是零個或多個資料元素的有限序列,元素之間有順序,且第乙個元素無前驅,最後乙個元素沒有後繼,其它的元素都有乙個前驅乙個後繼,就是我們說的一對一。我們先來談一談順序儲存結構,順序儲存是通過一維陣列來實現的,且順序結構儲存需要三個屬性,儲存空間的起始位置,線性表的最大儲存容量,以及線性...
資料結構 第二講 線性結構(堆疊和佇列)
堆疊和佇列都是對線性表做一些特殊的限制,形成了兩種儲存資料的結構,乙個是先進後出 乙個是先進先出 可以解決實際生活中遇到的一些問題,資料庫也可以理解成一種資料結構,只不過這種結構比較普通罷了。2.2.1 什麼是堆疊 先進後出,後進先出的線性表就是堆疊,相當於對線性表的操作做一些特殊的限制 堆疊 有一...
第二講 資料結構
include using namespace std const int n 100010 int e n ne n head 1,idx 向煉表頭插入乙個數x o 1 void add to head int x 在第k個插入的數後面插入乙個數x o 1 要用鍊錶那就是o n void add ...