結點類模板
#ifndef node_h
#define node_h
//類模板的定義
templateclass node ;
//類的實現部分
//建構函式,初始化資料和指標成員
templatenode::node(const t& data, node* next/*=0*/) :data(data), next(next) {};
//返回後繼結點的指標
templatenode* node:: nextnode()
//返回後繼結點的指標
templateconst node* node::nextnode()const
//在當前節點後插入結點p
templatevoid node::insertafter(node* p)
//刪除本結點的後繼結點,並返回其位址
templatenode* node::deleteafter()
next = temptr->next;//使當前的指標域指向temptr的後繼結點
return temptr;//返回被刪除結點的指標
}#endif // !node_h
#pragma once
#include#include#include"array.h"
#include"node.h"
using namespace std;
//鍊錶結點類的應用
//生成鍊錶
//查詢某值並刪除
//程式結束之前清空鍊錶
int main()
//a一一對n賦值
for (int i = 0; i < 9; i++)
n[9].data = a[9];
//將陣列首位址賦值給陣列指標名np
node* np = &n[0];
//從頭往後遍歷 n[0]的位址放的是頭結點
while (np != null)
cout << endl;
int f;
cout << "請輸入要查詢的數:";
cin >> f;
nodep(0, &n[0]);
np = &p;
//從頭往後遍歷到尾,發現下乙個結點data等於f的數就刪掉
while (np->nextnode() != null)
np = np->nextnode();
} cout << "刪除後的鍊錶:" << endl;
/** 在linkedlist的設計中,採用了附加指標front和rear,即鍊錶的結構為front->a1->a2->...->rear
* 只有在析構函式中才刪除這兩個指標,其餘的時間這兩個指標都是存在的,其中的資料始終為0,不儲存使用者資料
*/template class linkedlist ;
//類的實現部分
//生成新節點,資料域為item,指標域為ptrnext 返回指向該結點的指標
templatenode* linkedlist::newnode(const t& item, node* ptrnext)
//釋放結點
templatevoid linkedlist::freenode(node* p)
temp->next = p->next;
if(currptr==p)
if (prevptr = p)
//將鍊錶l複製到當前表(假設當前表為空),被複製建構函式和operator=呼叫
template void linkedlist::copy(const linkedlist& l)
ptr->next = rear;
size = l.getsize();
position = l.currentposition();
} //建構函式
template linkedlist::linkedlist()
//複製建構函式
template linkedlist::linkedlist(const linkedlist& l)
//析構函式
template linkedlist::~linkedlist()
//過載賦值運算子
template linkedlist& linkedlist::operator = (const linkedlist& l)
//返回鍊錶中元素個數
template int linkedlist::getsize() const
//鍊錶是否為空
template bool linkedlist::isempty() const
//初始化游標的位置
template void linkedlist::reset(int pos)
int i = 0;
prevptr = front;
currptr = front->next;
while (i < pos)
i++;
currptr = currptr->next;
prevptr = prevptr->next;
} position = pos;
} //使游標移動到下乙個節點
template void linkedlist::next()
currptr = currptr->next;
prevptr = prevptr->next;
position++;
} //游標是否移動到鏈尾
template bool linkedlist::endoflist() const
//返回游標當前的位置
template int linkedlist::currentposition() const
//在表頭插入節點
template void linkedlist::insertfront(const t & item)
//在表尾插入節點
template void linkedlist::insertrear(const t & item)
//在當前節點之前插入節點
template void linkedlist::insertat(const t & item)
//在當前節點之後插入節點
template void linkedlist::insertafter(const t & item)
//刪除頭節點,實質是刪除front->next
template t linkedlist::deletefront()
if (prevptr == front->next)
node* temp = front->next;
t d = temp->getdata();
front->next = temp->next;
delete temp;
size--;
if (front->next != rear)
position--;
return d;
} //刪除當前節點
template void linkedlist::deletecurrent()
//返回對當前節點成員資料的引用
template t& linkedlist::data()
//返回對當前節點成員資料的常引用
template const t& linkedlist::data() const
//清空鍊錶:釋放所有節點的記憶體空間,被析構函式和operator=使用
template void linkedlist::clear()
size = 0;
position = 0;
}#endif //link_h_
鍊錶指標域指向哪 鍊錶的概念與結點類模板
類模板的定義 template class node 類的實現部分 建構函式,初始化資料和指標成員 template node node const t data,node next 0 data data next next 返回後繼結點的指標 template node node nextnod...
c 中模板 類模板的宣告和定義
一 函式模板用法 1.1申明和定義 在函式申明和定義前面,加乙個模板template t,class c 就行,其餘正常定義和申明 呼叫時,跟正常函式一樣呼叫 注意 模板在呼叫時,才確定引數的具體型別!模板的宣告或定義只能在全域性,命名空間或類範圍內進行。即不能在區域性範圍,函式內進行,比如不能在m...
鍊錶的順序表示和實現(C 模板類實現)
list.h ifndef list h define list h define list init size 100 define listincrement 10 template class list 構造乙個空的線性表 template list list 銷毀線性表 template v...