資料結構筆記1

2021-08-10 16:55:28 字數 2114 閱讀 2825

資料結構

資料之間相互存在的一種或多種特定的關係的元素的集合

邏輯結構

資料物件中資料元素之間的相互關係

集合結構

線性結構

樹形結構

圖形結構

物理結構

順序儲存結構     (特徵:美女來插隊)

鏈式儲存結構     (對不起,我是警察)

抽象資料型別

資料型別:一組性質相同的值的集合及定義在此集合上的一些操作的總稱

抽象資料型別:乙個數字模型及定義在該模型上的一組操作

線性表(list) -----arraylist

a1是a2的前驅,ai+1 是ai的後繼,a1沒有前驅,an沒有後繼

n為線性表的長度 ,若n==0時,線性表為空表

個人資訊表是個線性表

儲存位置連續,可以很方便計算各個元素的位址

如每個元素佔c個儲存單元,那麼有:

loc(an) = loc(an-1) + c,於是有:

loc(an) = loc(a1)+(i-1)*c;

鏈式儲存方式線性表  linkedlist

線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素,這組儲存單元可以是連續的,也可以是不連續的

為了表示每個資料元素ai與其直接後繼資料元素ai+1之間的邏輯關係,對資料元素ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後繼的資訊

優:刪除還插入效率高

缺:查詢效率低

刪除:s->next=p->next

p->next=s;

插入p->next=p->next->next

迴圈鍊錶

將單鏈表中終端結點的指標端由空指標改為指向頭結點,就使整個單鏈表形成乙個環,這種頭尾相連的單鏈表稱為單迴圈鍊錶,簡稱迴圈鍊錶

雙向迴圈鍊錶

雙向迴圈鍊錶是單向迴圈鍊錶的每個結點中,再設定乙個指向其前驅結點的指標域

雙向迴圈鍊錶插入

雙向迴圈鍊錶刪除

public class linkedlistextends abstractsequentiallistimplements list,deque,queue,cloneable,serializable

} private static final class linkiteratorimplements listiterator

}}else

} }public void add(et object)else

} public void add(int location,e object)

}else

}linkprevious=link.previous;

linknewlink=new link(object,previous,link);

previous.next=newlink;

link.previous=newlink;

size++;

}else

}public e remove(int location)

}else

linkprevious=link.previous;

linknext=link.next;

previous.next=next;

next.previous=previous;

size--;

modcount++;

return link.data;

} throw new indexoutofbound***ception();

} public object toarray()

return contents; }

}

lru(least recently used,最近最少使用)演算法

主要使用linkedhashmap 演算法實現

雙向迴圈鍊錶插入

s->prior=p;

s->next=p->next;

p->next->prior=s;

p->next=s;

雙向迴圈鍊錶刪除

p->prior->next=p->next;

p->next->prior=p->prior;

linkhashmap  雙向迴圈鍊錶

資料結構筆記1

資料結構中關於線形表的描述,因為剛開始學也當是對大學未學這門課的補充吧,決定仔細學。沒想到一學還真發現自己程式設計中不少問題。首先對教材的理解上,重新拾起c語言。發現對結構定義和使用上存在盲點。對指象結構的指標既然不知。所以對can通訊 一知半解。現在回想起來有茅塞頓開的感覺。對於c程式設計中涉及到...

資料結構筆記 1

首先,什麼是資料結構?資料結構 data structure 是帶有結構特性的資料元素的集合,它研究的是資料的邏輯結構和資料的物理結構以及它們之間的相互關係,並對這種結構定義相適應的運算,設計出相應的演算法,並確保經過這些運算以後所得到的新結構仍保持原來的結構型別。簡而言之,資料結構是相互之間存在一...

資料結構筆記1

演算法的定義 演算法是對特定的問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令呢都可儀表乙個或幾個操作呢。演算法的5個重要特性 有窮性,不能無邊無際永遠也解答不完哦 確定性,你得有確定的答案哦 可行性,如果不可行,那何必浪費時間計算呢 輸入,沒有輸入怎麼開始呢 輸出,沒有輸出計算又有和意義...