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...