資料結構之鍊錶

2021-08-19 02:54:46 字數 2238 閱讀 7510

表的簡單陣列實現:因為在定義表的時候因為表是動態空間所以會估計的大一點,從而浪費了大量的空間。在表的插入和刪除的時候需要對錶進行大量的遍歷,所以一般不採用。

表的鍊錶實現:鍊錶由一系列不必在記憶體中相連的結構組成,每乙個結構均含有表元素和指向包含該元素後繼元的結構的指標。

表頭所解決的三個問題:

雙鏈表:通過包含乙個指向前乙個單元的指標即可。使得插入和刪除的空間開銷增加了一倍,但是簡化了刪除操作。

迴圈鍊錶:讓最後乙個單元反過來直接指向第乙個單元,表頭可有可無。並且還可以是雙向鍊錶(第乙個單元的前驅元指標指向最後的單元)

鍊錶的先關應用:多項式adt、基數排序、多重表

鍊錶的游標實現:因為缺少記憶體的管理,因此如果執行的find函式相對很少時游標實現的速度會顯著加快

鍊錶的優點:插入快、刪除快、動態的調整資料儲存大小、空間利用率高

鍊錶的缺點:查詢慢

list.h檔案

#include 

#include

#ifndef _list_h

struct node;

typedef

struct node *ptrtonode;

typedef ptrtonode list;

typedef ptrtonode position;

//清空鍊錶並返回

list makeempty(list l);

//建立乙個鍊錶

list createlist();

//判斷乙個鍊錶是否是空表

int isempty(list l);

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

int islast(position p, list l);

//顯示當前鍊錶

void showlist(list l);

//更改函式

void change(int x,int y, position p);

//find函式

position find(int x, list l);

//插入函式

void insert(int x, list l, position p);

//刪除函式

void delete(int x, list l);

//返回表元的前驅

position findprevious(int x , list l);

//刪除鍊錶函式

void deletelist(list l);

//返回第乙個元素

position first(list l);

//返回表頭

position header(list l);

//返回下乙個元素

position advance(position p);

//返回元素的值

int retrieve(position p);

#endif // _list_h

//定義節點型別

struct node

;

list.c檔案

#include

"list.h"

int isempty(list l)

position find(int x,list l)

return p;

}position findprevious(int x,list l)

return p;

}void insert(int x,list l,position p)

tmpcell->

data

= x;

tmpcell->next = p->next;

p->next = tmpcell;

}void showlist(list l)

printf("-------------------------- \n");

}void change(int x,int y,list l)

}int islast(position p, list l)

void delete(int x,list l)

}list createlist()

資料結構 表之煉表

頭插法建立 尾插法建立 顯示 銷毀 include include using namespace std typedef int elemtype typedef struct lnode linklist void createlinklistf linklist l,elemtype a,in...

資料結構之鍊錶

頭結點 第乙個有效結點之前的那個結點 頭結點並不存有效資料 加頭結點的目的主要是為了方便對鍊錶的操作 頭指標 指向頭結點的指標變數 尾指標 指向尾節點的指標變數 如果希望通過乙個函式對鍊錶進行處理,只需要乙個引數 頭指標 首先要定義乙個單鏈表儲存結構 然後建立乙個空表,即初始化,我寫的這個提前設定好...

資料結構之鍊錶

鍊錶是一種基本的資料結構型別,它由乙個個結點組成。每乙個結點包括乙個資料的儲存和乙個指向下乙個結點的引用。在這個定義中,結點是乙個可能含有任意型別資料的抽象實體,它所包含的指向結點的應用顯示了它在構造鍊錶之中的作用。和遞迴程式一樣,遞迴資料結構的概念一開始也令人費解,但其實它的簡潔性賦予了它巨大的價...