国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++中CSimpleList的實現與測試實例

2020-01-26 15:14:58
字體:
來源:轉載
供稿:網友

本文實例講述了C++簡單列表類的實現方法。分享給大家供大家參考。具體方法如下:

_AFXTLS.CPP文件如下:

//#include "StdAfx.h #include <stddef.h> #include <stdio.h> #include "_AFXTLS_.H"  struct MyThreadData{   MyThreadData* pNext;   int nShortData; };  void CSimpleList::AddHead(void *p) {   *GetNextPtr(p)=m_pHead;   m_pHead = p; }  BOOL CSimpleList::Remove(void* p) {   BOOL bRet = FALSE;   if (p == NULL)   {     bRet = FALSE;   }    if (p == m_pHead)   {     m_pHead = GetNext(m_pHead);     bRet = TRUE;   }   else   {     void*  pTest;     pTest = m_pHead;     while (pTest && (GetNext(pTest) != p))     {       pTest = GetNext(pTest);     }     if (pTest != NULL)     {       *GetNextPtr(pTest) = GetNext(p);       bRet = TRUE;     }   }   return bRet;  }  void main() {   MyThreadData* pData;   CSimpleList list;   list.Construct(offsetof(MyThreadData, pNext));   for (int i=0;i<10;i++)   {     pData = new MyThreadData;     pData->nShortData = i;     list.AddHead(pData);   }    //遍歷鏈表,釋放MyThreadData對象占用的空間   pData = (MyThreadData*)list.GetHead();   while(pData != NULL)   {     MyThreadData* pNextData = pData->pNext;     printf("The value is %d/n",pData->nShortData);     delete pData;     pData = pNextData;   } } 

_AFXTLS_.H文件如下:

//#include "StdAfx.h #ifndef __AFXTLS_H__ #define __AFXTLS_H__ #include <Windows.h> class CSimpleList { public:   CSimpleList(int nNextOffset=0);   void Construct(int nNextOffset);   //接口   BOOL IsEmpty() const;   void AddHead(void *p);   void RemoveAll();   void* GetHead() const;   void* GetNext(void* preElement) const;   BOOL Remove(void* p);    //為實現接口所需的成員   void  *m_pHead;   size_t m_nextOffset;   void** GetNextPtr(void* preElement) const; };  //類的內聯函數 inline CSimpleList::CSimpleList(int nNextOffset)   {m_pHead = NULL; m_nextOffset = nNextOffset;  }  inline void CSimpleList::Construct(int nNextOffset)   {m_nextOffset = nNextOffset;  }  inline BOOL CSimpleList::IsEmpty() const {   return m_pHead==NULL; } //inline void AddHead(void *p) //{ // //} inline void CSimpleList::RemoveAll() {   m_pHead = NULL; } inline void* CSimpleList::GetHead() const {   return m_pHead; } inline void* CSimpleList::GetNext(void* preElement) const {   return *GetNextPtr(preElement); } //inline BOOL CSimpleList::Remove(void* p) //{ // //} inline void**  CSimpleList::GetNextPtr(void* preElement) const {   return (void**)((BYTE*)preElement+m_nextOffset); }   #endif

希望本文所述對大家的C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海晏县| 山阳县| 舒兰市| 同仁县| 政和县| 株洲县| 龙游县| 开阳县| 呼玛县| 东莞市| 井研县| 望谟县| 黄陵县| 常德市| 贵州省| 宁阳县| 凤冈县| 沙洋县| 吉首市| 顺平县| 习水县| 南澳县| 新宁县| 湘潭市| 西畴县| 阿克陶县| 永德县| 弥勒县| 海阳市| 玛多县| 乌海市| 富裕县| 临高县| 梓潼县| 比如县| 泰和县| 洛宁县| 凤山县| 木兰县| 南昌市| 康定县|