線性表之單鏈表

2021-09-29 13:18:02 字數 2226 閱讀 8187

template <typenamet>

structnode

;

頭結點:如果鍊錶有頭節點,則鏈式結構中的第乙個節點稱為頭結點:其資料域可以儲存一些附加資訊,如鍊表長度;其指標域指向鍊錶中的第乙個節點

template class linklist 

linklist ( t a[ ], int n ) ;

~linklist ( ) ;

int length ( ) ;

t get ( int i ) ;

int locate ( t x ) ;

void insert ( int i, t x ) ;

t delete ( int i ) ;

void printlist ( ) ;

private:

node*first; // 單鏈表的頭指標  , 可以省略

};

帶引數的建構函式(頭插法)

template linklist:: linklist(t a[ ], int n) 

}

尾插法

template linklist:: linklist(t a[ ], int n) 

r->next=null; //單鏈表建立完畢,將終端結點的指標域置空

}

單鏈表的遍歷

template linklist:: printlist()

}

不帶頭結點的單鏈表構造

頭插法:

}尾插法:

}

單鏈表按位置查詢

/*查詢演算法:

1 工作指標p初始化,計數器初始化

2 執行下列操作,直到p為空或指向第i個節點

2.1 工作指標後移

2.2 計數器增1

3 若p為空,則第i個元素不存在,丟擲位置異常;否則查詢成功,返回節點p的資料元素*/

template t linklist::get(int i)

if (!p) throw "位置";

else return p->data;

}

單鏈表按位置查詢

/*

1 工作指標p初始化,計數器初始化

2 查詢第i-1個節點,並使工作指標p指向該節點

3 若查詢不成功(p==null),說明位置錯誤,丟擲位置異常,否則

3.1 生成乙個元素值為x的新節點s

3.2 將s插入到p之後

*/template void linklist::insert(int i, t x)

if (!p) throw "位置";

else

}

單鏈表插入

1 工作指標p初始化,計數器初始化

2 查詢第i-1個節點,並使工作指標p指向該節點

3 若查詢不成功(p==null),說明位置錯誤,丟擲位置異常,否則

3.1 生成乙個元素值為x的新節點s

3.2 將s插入到p之後

template void linklist::insert(int i, t x)

if (!p) throw "位置";

else

}

刪除

template t linklist::delete(int i)

if (!p || !p->next) throw "位置"; //結點p不存在或結點p的後繼結點不存在

else

}

析構

template linklist:: ~linklist()

}

線性表之單鏈表

cpp view plain copy linkedlist linc 2013.2.26 include include include define ok 1 define error 1 define ture 1 define false 0 struct node typedef stru...

線性表之單鏈表

零個或多個資料元素的有限序列,線性表中的元素是一對一的關係,除了第乙個元素和最後乙個元素外,其他元素都是首尾相接的。線性表有兩種儲存方式,一種是順序儲存結構,另一種是鏈式儲存結構。指用一段位址連續的儲存單元依次儲存線性表的資料元素。優點 無需為表示元素間的邏輯關係而增加額外的儲存空間 隨機查詢元素,...

線性表之單鏈表

一 帶頭結點的構建和插入 include includestruct lnodelnode,linklist bool initlist linklist l l next null return true bool listinsert linklist l,int i,int e lnode p...