• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++类模版封装单链表

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

代码如下

View Code
  1 #include <iostream>
  2 #include <fstream>
  3 #include <sstream> 
  4 
  5 using namespace std;
  6 class Student
  7 {
  8 public:
  9     int sId;
 10     char sName[10];
 11 };
 12 
 13 //申明模版类
 14 template <typename T>
 15 class Link
 16 {
 17 private:
 18     Link * pHead;
 19     Link * pCur;
 20     Link * pPrev;
 21     Link * pNext;
 22     T node;
 23     int iSize;
 24 public:
 25     Link()
 26     {
 27         pHead = NULL;
 28         pCur = NULL;
 29         pPrev = NULL;
 30         iSize = 0;
 31     }
 32     void push(T& node);
 33     int deleteNode(T& node);
 34     T searchNode(T& node);
 35 };
 36 
 37 //定义类模版函数
 38 template<class T>
 39 void Link<T>::push(T& node)
 40 {
 41     if(pHead == NULL)
 42     {
 43         pCur = new Link;
 44         pCur->pNext = NULL;
 45         pHead = pCur;
 46         pPrev = pHead;
 47     }
 48     else
 49     {
 50         pCur = new Link;
 51         pCur->pNext = NULL;
 52 
 53         pPrev->pNext = pCur;
 54         pPrev = pCur;
 55     }
 56     pCur->node = node;
 57     iSize ++;
 58 }
 59 
 60 template<class T>
 61 int Link<T>::deleteNode(T& node)
 62 {
 63     int flag = 0;
 64     Link *pTemp = pHead;
 65     Link *pPrev = pHead;
 66     while(pTemp != NULL)
 67     {
 68         if(pTemp->node.sId == node.sId)
 69         {
 70             if(pTemp == pHead)
 71             {
 72                 pHead = pHead->pNext;
 73             }
 74             else if(pTemp->pNext == NULL)
 75             {
 76                 pPrev->pNext = pTemp->pNext;
 77             }
 78             else
 79             {
 80                 pPrev->pNext = pTemp->pNext;
 81             }
 82             flag = 1;
 83         }
 84         if(pTemp == pHead)
 85         {
 86             pPrev = pHead;
 87         }
 88         else
 89         {
 90             pTemp = pTemp->pNext;
 91             pPrev = pPrev->pNext;
 92         }
 93     }
 94     iSize --;
 95     return flag;
 96 }
 97 
 98 template<class T>
 99 T Link<T>::searchNode(T& node)
100 {
101     Link *pTemp = pHead;
102     Link *pPrev = pHead;
103     while(pTemp != NULL)
104     {
105         if(pTemp->node.sId == node.sId)
106         {
107             return pTemp->node;
108         }
109         pTemp = pTemp->pNext;
110     }
111 }
112 
113 void operator <<(ostream&,Student s)
114 {
115     cout<<s.sId<<" "<<s.sName<<endl;
116 }
117 
118 int main()
119 {
120     Student s1,s2,temp;
121     s1.sId = 10;
122     strcpy(s1.sName,"xxx");
123     s2.sId=2;
124     strcpy(s2.sName,"jack");
125     Link<Student> link;
126     link.push(s1);
127     link.push(s2);
128     temp = link.searchNode(s2);
129     cout<<temp;
130     cout<<temp.sName<<endl;
131     return 0;
132 }

s


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#集合类发布时间:2022-07-18
下一篇:
C#三层ATM-8.存款、取款功能设计发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap