修改函數名然後調用內部函數創建新函數進行合並和拆分應該不難。
模板& lttypename T & gt
根據考試成績分等級排列的投考者的名單
{
私人:
結構節點
{
測試數據;
節點*下壹個;
節點(常數T & ampt=T()):數據(T)
{ next = NULL}
};
節點*頭;
Node* getPointer(int pos)
{
Node * p =頭;
for(int I = 0;我& ltposi++)
p = p-& gt;接下來;
返回p;
}
公共:
list():head(NULL){ };
空清除()
{
而(頭!=空)
{
node * p = head-& gt;接下來;
刪除標題;
head = p;
}
}
~列表()
{
clear();
}
void insert _ front(const T & amp;t)
{
Node* p =新節點(t);
p->;下壹個=頭;
head = p;
}
無效行程()
{
Node* p =頭;
而(p!=空)
{
cout & lt& ltp->;數據& lt& lt' ';
p = p-& gt;接下來;
}
cout & lt& ltendl
}
void insert _ back(const T & amp;t)
{
Node* p =新節點(t);
if(head == 0)
head = p;
其他
{
get pointer(size()-1)-& gt;next = p;
}
}
int size()
{
int CNT = 0;
Node* p =頭;
而(p!=空)
{
cnt++;
p = p-& gt;接下來;
}
返回cnt
}
T getHead()
{
if(head == NULL)
扔“沒頭”;
返回頭-& gt;數據;
}
T getTail()
{
if(head == NULL)
扔“沒尾巴”;
Node* p =頭;
while(p->;下壹個!=空)
{
p = p-& gt;接下來;
}
返回p-& gt;數據;
}
布爾空()
{
return head = = NULL
}
int find(const T & amp;t)
{
int pos = 0;
Node* p =頭;
而(p!=空)
{
如果(p->;數據== t)
退貨位置;
pos++;
p = p-& gt;接下來;
}
return-1;
}
布爾更新數據(const T & ampo,const T & ampn)
{
int pos = find(o);
if(pos == -1)
返回false
node * p = get pointer(pos);
p->;數據= n;
返回true
}
布爾擦除(常數T & ampt)
{
int pos = find(t);
if(pos == -1)
返回false
如果(位置== 0)
{
node * p = head-& gt;接下來;
刪除標題;
head = p;
}
其他
{
node * pre = get pointer(pos-1);
node * cur = pre-& gt;接下來;
pre->;next = cur-& gt;接下來;
刪除cur
}
返回true
}
};