資料結構與演算法分析筆記02 鍊錶

2021-10-01 05:20:44 字數 2082 閱讀 9032

1.抽象資料型別(abstract data type,adt)是一些操作的集合。

2.鍊錶由一系列不必在記憶體中相連的結構組成。每乙個結構均含有表元素和指向包含該元素後繼元結構的指標。我們稱之為next指標。最後乙個單元的next指標指向null;該值由c定義並且不能與其他指標混淆。ansi c規定null為零。

鍊錶的型別宣告

```c

#ifndef _list_h

struct node;

typedef

struct node *ptrtonode;

typedef ptrtonode list;

typedef ptrtonode position;

list makeempty

(list l)

;int

isempty

(list l)

;int

islast

(position p, list l)

;position find

(elementtype x,list l)

;void

delete

(elementtype x,list l)

;postion findprevious

(elementtype x,list l)

;void

insert

(elementtype x,list l,position p)

;void

deletelist

(list l)

;position header

(list l)

;position first

(list l)

;position advance

(position p)

;#endif

/*_list_h */

struct node

測試乙個鍊錶是否是空表的函式

```c

int

isempty(list l)

測試當前位置是否是鍊錶的末尾函式

int

islast

(position p,list l)

鍊錶的find例程

position

find

(elementtype x,list l)

鍊錶的刪除例程

void

delete

(elementtype x,list l)

}

鍊錶的插入例程

void

insert

(elementtype x,list l,position p)

雙鏈表

只要在資料結構上附加乙個域,使它包含指向前乙個單元的指標即可。

迴圈鍊錶

最後的單元反過來直指第乙個單元

使用鍊錶的三個例子:

1.表示一元多項式的簡單方法

2.某些特殊情況下以線性時間進行排序的一種方法

3.大學的課程註冊

鍊錶的游標實現

在鍊錶的指標實現中又兩個重要的特點:

1.資料儲存在一組結構體中。每乙個結構體包含有資料以及指向下乙個結構體的指標。

2.乙個新的結構體可以通過呼叫malloc而從系統全域性global memory得到,並可通過呼叫free而被釋放。

資料結構與演算法02 鍊錶的使用與實現

二 常用鍊錶 三 定義單向鍊錶 四 來一道力扣題嗎?五 總結 動態陣列有明顯的缺點 可能會造成記憶體的浪費 是否可以 多少申請多少記憶體 鍊錶可以 鍊錶是 種鏈式儲存的線性表,所有元素的記憶體位址不 定是連續的 鍊錶中的每 個記憶體塊被稱為節點node,node節點由兩部分構成 儲存資料 可以是任何...

資料結構與演算法 鍊錶

題目 合併兩個已經排序好的鍊錶 非遞迴和遞迴兩種 方法1 cpp view plain copy print color 000000 合併鍊錶.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std struct listnod...

資料結構與演算法 鍊錶

在講述鍊錶之前讓我們對資料結構進行乙個簡單的回顧 我們知道,資料結構指的是描述實際問題中各個資料項節點之間的前後邏輯結構關係,即要麼是線性結構 即某一資料項的前繼節點和後繼節點有且只有乙個 要麼是非線性結構 即某一資料節點的前驅或者後繼節點不止乙個 在確定了實際資料項的資料結構之後,我們要採用某種儲...