資料結構二

2021-08-15 12:36:01 字數 1037 閱讀 6933

在資料結構一中,我們已經說過了線性表、棧等資料結構。已經對資料結構有了一些初步的了解,那麼我們在這裡在說一說關於佇列和雜湊表的用法。。

一、佇列:

1)定義:佇列是另一種特殊的線性表,它和棧不同,它是允許在一段進行插入,在另一端進行刪除的線性表。允許插入的一頭稱為隊尾,通常用乙個隊尾指標tail指向隊尾元素,即tail總是指向最後被插入的元素;允許刪除的一端稱為對首,通常也用乙個對首指標head指向排頭元素的前面。

佇列這種資料結構中,最先插入的元素將最先被刪除;反之最後插入的元素將最後被刪除;反之最後插入的元素將最後被刪除。這也是佇列與棧最本質的區別。因此佇列又被稱為「先進先出」的線性表。

2)種類

i、順序佇列

i、操作規則:先進先出,後進後出

ii、如何操作

①定義:int queue[n],head=0,tal=0;

head指向佇列首元素,tail指向隊尾元素的右側

②入隊:inline void push(int a)

③出隊:inline int pop()

④對空的條件:inline bool empty()

⑤佇列元素的個數 tail-head+1;

ii:迴圈佇列

:iii、經典例題:

其實佇列的經典例題有n多道,比如bfs也用到佇列

這裡題目就不放了,具體題目也可以看《回憶bfs》中的題目

二、雜湊(hash)

通俗易懂的說,把關鍵字k放在f[k]的儲存位置上,即h[f[k]]=d[k];萬不得已時,最重要的是找到乙個對映函式,將原來不適合作為下標的關鍵字轉換為乙個可作為下標的關鍵字:任何,是的s[k]=?可執行。

方法:除留餘數法(對於大數字);變換轉換法(對於字串)等方法。

①除留餘數法:對一些理論上要爆陣列記憶體的巨大巨大的數進行求餘操作,而對數進行求餘操作的數一般也是乙個較大的質數,例如107等。這樣map較為保險。

②變化轉化法:將一些陣列不能儲存的字串進行按權值展開的操作,再將展開後得到的值存在陣列中。這樣也是比較保險的。

這個**還是比較好實現的吧~那麼在這裡也就不貼了。

資料結構 二

字串處理 strlen 用來計算字元的長度,並不包括結束字元 0 空字元長度為0 1 include 2 3 int strlen char string 4 10 int main 11 strcpy char str1,char str2 用來拷貝字串,把str2每個字元都拷貝到str1中,直到...

資料結構(二)

1.順序表和煉表綜合 在遞增有序的順序表中程式設計實現a a b c typedef intelemtype include sqlist.h 即為資料結構 一 順序表部分 include int main else continue else continue output mylist1 sys...

資料結構 (二)

第四章 樹和二叉樹 1 對於具有層次結構的資料需要用樹形結構來描述。2 樹形結構中乙個結點可以有乙個或多個直接後繼。3 樹是n個結點的有限集合,滿足 當n 0時,稱為空樹 當n 0時,有且僅有乙個稱為根的結點,除根結點外,其餘結點分為m m 0 個互不相交的非空集合,這些集合中的每乙個都是一棵樹,稱...