資料結構與演算法

2022-05-05 03:24:11 字數 2343 閱讀 6184

我們如何把現實中大量而且非常複雜的問題以特定的資料型別(個體)和特定的儲存結構(個體的關係)儲存到相應的主儲存器(記憶體)中,以及在此基礎上為實現某個功能而執行的相應操作,這個相應的操作也叫做演算法。
資料結構 == 個體 + 個體關係

演算法 == 對儲存資料的操作

資料結構是軟體中最核心的課程。
程式 = 資料的儲存 + 資料的操作 + 可以被計算機執行的語言。

常見的排序

比較通俗的講,把所有的節點用一根線串起來的結構就稱之為線性結構。線性結構分為兩種方式:陣列、鍊錶。
陣列需要一塊連續的記憶體空間來儲存,堆記憶體的要求比較高。如果我們申請乙個100m大小的陣列,當記憶體中沒有連續的、足夠大的空間時,即使記憶體的剩餘可用空間大於100m,任然會申請失敗。而鍊錶恰恰相反,它並不需要一塊連續的記憶體空間,他通過「指標」將一組零散的記憶體塊串聯起來使用,所以申請的是大小是100m的鍊錶,name根本不會有問題。

陣列,在python語言中成為列表,是一種基本的資料結構型別。
列表的優缺點

缺點:鍊錶的定義

鍊錶的優缺點

缺點:鍊錶的及誒單結構如下:

python語言實現單鏈表的增刪查

在python語言中用物件導向組合的方式,代替指標指向,更加的方便,簡單,容易理解。

# use the linked list sort liangshan po 108 heroes

#class hero():

def __init__(self, no=none, name=none, nick_name=none, next=none):

self.no = no

self.name = name

self.nick_name = nick_name

self.next = next

def add_hero(head, hero):

current_position = head

while current_position.next and hero.no > current_position.next.no:

current_position = current_position.next

hero.next = current_position.next

current_position.next = hero

def get_all(head):

current_position = head

while current_position.next:

print("編號:%s,姓名:%s,外號:%s" % (

current_position.next.no, current_position.next.name, current_position.next.nick_name))

current_position = current_position.next

def delete_hero(head, hero):

current_position = head

if current_position.next:

while current_position.next and current_position.next.no < hero.no:

current_position = current_position.next

current_position.next = current_position.next.next

else:

print("鍊錶為空")

head = hero()

hero = hero(1, '宋江', '及時雨')

# hero1 = hero(2, '盧俊義', '玉麒麟')

# hero2 = hero(3, '吳用', '智多星')

# hero3 = hero(5, '林沖', '豹子頭')

# hero4 = hero(4, '公孫勝', '入雲龍')

# add_hero(head, hero)

# add_hero(head, hero1)

# add_hero(head, hero2)

# add_hero(head, hero3)

# add_hero(head, hero4)

# get_all(head)

print("---------------------")

delete_hero(head, hero)

get_all(head)

資料結構與演算法 演算法 演算法和資料結構

資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...

資料結構 資料結構與演算法01

1 求一組整數中的最大值。演算法 基本操作是 比較兩個數的大小 模型 仔細想想 你並不知道這個整數到底是多大?整數過大你該怎麼去表示?2 足協的資料庫管理的程式 演算法 需要管理的專案?如何管理?使用者介面?模型 3 資料與資料結構 資料 所有能被輸入到計算機中,並被計算機處理的符號的集合計算機操作...

資料結構 資料結構與演算法02

1 演算法設計的原則 設計演算法時,通常應考慮達到以下目標 1,正確性 2,可讀性 3,健壯性 4,高效率與低儲存量需求 1,正確性 規格說明 四個層次 a,程式中不含語法錯誤 b,程式對於幾組輸入資料能夠得出滿足要求的結果 c,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...