#ifndef _listex_h_
#define _listex_h_
/***********************************
@function: 鍊錶模板
@param:
***********************************/
#include using namespace std;
template class clist
; snode *m_phead, *m_ptail;
public:
/*@function: 建構函式
@param:
*/ clist()
/*@function: 析構函式
@param:
*/ ~clist()
delete p;
p = null;
} /**********************************
@function:遍歷鍊錶
@param:
**********************************/
void print() const }
/***********************************
@function: 向尾部新增資料
@param: data--要新增的資料
***********************************/
void addtail(t data)
/***********************************
@function: 向頭部新增資料
@param: data--要新增的資料
***********************************/
void addhead(t data)
/***********************************
@function: 檢測空鍊錶的情況(沒有元素)
@param:
***********************************/
bool isempty() const
/***********************************
@function:返回鍊錶的頭部元素(不能為空)
@param:
***********************************/
t gethead() const
/***********************************
@function:返回鍊錶的末尾元素(不能為空)
@param:
***********************************/
t gettail() const
/***********************************
@function:從鍊錶頭部中移走元素
@param:
***********************************/
t removehead()
/***********************************
@function:從鍊錶中移除末尾元素
@param:
***********************************/
t removetail()
/***********************************
@function:從鍊錶中移走所有元素
@param:
***********************************/
bool removeall()
m_phead->pnext = m_ptail;
m_ptail->ppre = m_phead;
return true;
} /***********************************
@function:獲取指定位置的元素
@param: nindex--指定的位置
***********************************/
t getat(int nindex) const
return p->data;
} /***********************************
@function:設定指定位置的元素
@param: nindex--設定的位置
data----設定的資料
***********************************/
bool setat(int nindex, t data)
p->data = data;
return true;
} /***********************************
@function:從鍊錶中刪除乙個由位置確定的元素
@param: nindex--要刪除的位置
***********************************/
t removeat(int nindex)
data = p->data;
q = p->ppre;
q->pnext = p->pnext;
return data;
} /***********************************
@function:返回此煉表中的元素數
@param:
***********************************/
int getcount() const
return ncount;
} /***********************************
@function:在指定位置前插入乙個新的元素
@param: nindex--指定的位置
data----新元素資料
***********************************/
bool insertbefore(int nindex, t data)
q = p->ppre;
snode *pnewnode = new snode();
pnewnode->data = data;
pnewnode->ppre = q;
pnewnode->pnext = p;
q->pnext = pnewnode;
p->ppre = pnewnode;
return true;
} /***********************************
@function:在指定位置後插入乙個新的元素
@param: nindex--指定的位置
data----新元素資料
***********************************/
bool insertafter(int nindex, t data)
q = p->pnext;
snode *pnewnode = new snode();
pnewnode->data = data;
pnewnode->ppre = p;
pnewnode->pnext = q;
p->pnext = pnewnode;
q->ppre = pnewnode;
return true;
} /***********************************
@function:獲得由某個值確定的元素位置
@param: data--需要查詢的值
***********************************/
int find(t data)
return ncount;
} /***********************************
@function: 公升序排序
@param:
***********************************/
void sort()
p = p->pnext;
} } }
};#endif // !_listex_h_
用C 實現雙向鍊錶(使用泛型)
using system using system.collections.generic using system.linq using system.text namespace doublelinkedlist 指向下乙個元素指標 public node next 資料,可以是任何型別 pub...
泛型程式設計之泛型引數
問題 用c 語言實現求乙個數的平方。分析 乙個數,可以是int double complex等,規則求數的平方 x x 偽 sqrt x return x x 實現一 提供一組用於求不同數字型別的平方函式。int sqrtint int x int sqrtdouble double x 實現二 上...
c 泛型程式設計 之 TypeLists
完整 在 關於 c 泛型中的 typetraits 參考 c 泛型程式設計 之 typetraits ifndef type lists h define type lists h include include include typetraits.h typelists 內部沒有任何數值 val...