Day3——數據結構

今天換了一個老師講。因爲座位是隨便坐的,所以,我們就坐到了第一排啊。


(一)鏈表

鏈表可以存放一系列數,這點與數組一樣。但與數組不同的是它不是天生就是有序的,需要刻意記錄。鏈表的數據還是用數組存儲。
鏈表也分爲好幾種。

1、順序鏈表
除了記錄數據外,還要另開一個數組記錄每個元素下一個元素的下標。同時記錄第一個元素。
2、反向鏈表
除了記錄輸入數據,還要另開一個數組記錄每個元素前一個元素的下標。同時記錄最後一個元素。
3、循環鏈表
最後一個元素爲第一個元素,其餘一樣。
4、雙向鏈表
記錄數據。同時開兩個數組,分別記錄前一個數的小標與後一個下標。

插入元素:
[Code]
…通過遍歷等方法找到a,假如a,x,c的下標爲pa,px,pc。
next[px]=next[pa];
next[pa]=px;

刪除元素:
[Code]
…通過遍歷等方法找到a,假如a,x,c的下標爲pa,px,pc。
next[pa]=next[px];
next[px]=0;
棧一般用結構體存儲。
STL庫中也有專門的讀入等函數。只不過內存佔用較大。


(二)棧

棧是一種後進先出的容器。
棧的數據存儲在一個數組裏,數組的大小就是這個棧容器的大小。
用top記錄棧頂元素的下標。
棧結構必須實現將元素進、出棧的功能。
1、訪問當前棧頂元素:CODE{s[top];};
2、新的元素X入棧:CODE{++top;s[top]=x;};
3、棧頂元素出棧:CODE{–top;}。


(三)隊列

隊列與棧是相對的。隊列是一種先進先出容器。

普通隊列
1、訪問當前隊首元素:CODE{q[head+1]};
2、新的元素X入隊列:CODE{++tail;q[tail]=x;};
3、隊首元素出隊列:CODE{++head}。

環形隊列
環形隊列相比普通隊列可以節省更多的空間。
這裏寫圖片描述


總的來說,今天的東西是聽懂了。雖然只是簡單的數據結構。&_&

發佈了40 篇原創文章 · 獲贊 9 · 訪問量 5721
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章