?? 模板鏈表_02.h
字號(hào):
#ifndef EXAMPLE9_02_H
#define EXAMPLE9_02_H
#include <iostream>
#include <stdlib.h>
using namespace std;
template<class T>
class ListNode //結(jié)點(diǎn)類
{
public:
ListNode(){} //結(jié)點(diǎn)類構(gòu)造函數(shù)
ListNode(const T& nItem, ListNode<T> *ptrNext=NULL); //結(jié)點(diǎn)類帶參數(shù)構(gòu)造函數(shù)
T& ShowData(){return Data;} //返回本結(jié)點(diǎn)數(shù)據(jù)的引用
void InsertAfter(ListNode<T> *ptr); //插入新結(jié)點(diǎn)作為本結(jié)點(diǎn)的后續(xù)結(jié)點(diǎn)
ListNode<T> *DeleteAfter(void); //刪除本結(jié)點(diǎn)的后續(xù)結(jié)點(diǎn)
ListNode<T> *NextListNode() const; //獲得本結(jié)點(diǎn)的后續(xù)結(jié)點(diǎn)的指針
void SetNext(ListNode<T> *ptr){ptrNext=ptr;} //設(shè)置本結(jié)點(diǎn)的后續(xù)結(jié)點(diǎn)指針
private:
T Data; //本結(jié)點(diǎn)的數(shù)據(jù)
ListNode<T> *ptrNext; //指向本結(jié)點(diǎn)的后續(xù)結(jié)點(diǎn)的指針
};
template <class T>
class LinkedList //鏈表類的聲明及其實(shí)現(xiàn)
{
public:
LinkedList(void);
LinkedList(const LinkedList<T> &list); //拷貝構(gòu)造函數(shù)
~LinkedList(void){DeleteAll();} //析構(gòu)函數(shù),釋放鏈表占用的資源
LinkedList<T> &operator=(const LinkedList<T> &list); // ″=″號(hào)運(yùn)算符 //的重載
void Next();//指向鏈表的下一個(gè)結(jié)點(diǎn)
int EndOfList() const{return (!ptrCurr);} //判斷鏈表當(dāng)前位置是否是表尾
int CurrPosition() const{return nPosition;}//獲得當(dāng)前位置指針在鏈表中的位置
ListNode<T> ptrFrontPosition() const{return ptrFront;}
ListNode<T> ptrTailPosition() const{return ptrTail;}
ListNode<T> ptrPrevPosition() const{return ptrPrev;}
void InsertFront(const T& nItem); //將數(shù)據(jù)為nItem的結(jié)點(diǎn)插入到鏈表頭
void InsertTail(const T& nItem); //將數(shù)據(jù)為nItem的結(jié)點(diǎn)插入到鏈表尾
void InsertAt(const T& nItem); //將數(shù)據(jù)為nItem的結(jié)點(diǎn)插入到鏈表的當(dāng)前位置
void InsertAfter(const T& nItem); //將數(shù)據(jù)為nItem的結(jié)點(diǎn)插入到鏈表的當(dāng)前位置之后 //位置之后
void InsertOrder(T nItem);
//將數(shù)據(jù)為nItem的結(jié)點(diǎn)插入到排序鏈表中,并構(gòu)成新的排序鏈表
int DeleteHead(); //刪除鏈表頭結(jié)點(diǎn)
void DeleteCurr(); //刪除鏈表當(dāng)前結(jié)點(diǎn)
void Delete(T key); //刪除鏈表中數(shù)據(jù)為key的結(jié)點(diǎn)
void DeleteAll(); //刪除鏈表中的所有結(jié)點(diǎn)
T& GetData(); //得到鏈表中的當(dāng)前結(jié)點(diǎn)數(shù)據(jù)
void DisplayList(); //顯示鏈表中所有結(jié)點(diǎn)的數(shù)據(jù)
int Find(T& nItem); //在鏈表中找到數(shù)據(jù)為nItem的結(jié)點(diǎn)
int ListLength() const{return nListLength;}; //求鏈表的長(zhǎng)度
int ListEmpty() const{return nListLength;} //判斷鏈表是否為空
void Reset(int nPos=0); //重新設(shè)置鏈表的當(dāng)前指針的位置
private:
ListNode<T> *ptrFront, //鏈表的頭結(jié)點(diǎn)指針
*ptrTail, //鏈表的尾結(jié)點(diǎn)指針
*ptrPrev, //鏈表的當(dāng)前結(jié)點(diǎn)的前一個(gè)結(jié)點(diǎn)的指針
*ptrCurr; //鏈表的當(dāng)前結(jié)點(diǎn)指針
int nListLength; //鏈表的長(zhǎng)度
int nPosition; //鏈表的當(dāng)前結(jié)點(diǎn)指針的位置
ListNode<T> *GetListNode(const T &nItem,ListNode<T> *ptrNext=NULL);
//獲得鏈表的下一個(gè)結(jié)點(diǎn)指針
void FreeListNode(ListNode<T> *ptr){delete ptr;} //釋放結(jié)點(diǎn)資源
void CopyList(const LinkedList<T>& list); //逐項(xiàng)拷貝鏈表
};
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -