C 泛型程式設計之雙向鍊錶

2021-08-19 12:09:25 字數 4291 閱讀 4636

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