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

首頁(yè) > 編程 > C++ > 正文

C++利用靜態(tài)成員或類模板構(gòu)建鏈表的方法講解

2020-05-23 14:06:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了C++利用靜態(tài)成員或類模板構(gòu)建鏈表的方法講解,鏈表是基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),而在C++中構(gòu)件單鏈表還是稍顯復(fù)雜,需要的朋友可以參考下
 

直接上代碼了,說(shuō)明看注釋就可以:

利用靜態(tài)成員構(gòu)建鏈表

#include <IOSTREAM.H>  class Node { public:   Node(int val, Node* next):val(val),next(next){}   //~Node(){cout<<"del "<<val<<endl;}   static void showAll();//打印全部節(jié)點(diǎn)的值   static void insertHead(int);//頭插   static void insertTail(int);//尾插   static void delHead();//刪頭   static void delTail();//刪尾   static void clear();//清空 protected:   int val;   Node *next;   static Node *head; private: };  Node* Node::head = 0;  void Node::showAll(){//打印全部節(jié)點(diǎn)的值   Node *p = head;   while (p)   {     cout<<p->val<<" ";     p = p->next;   }   cout<<endl; }  void Node::insertHead(int val){//頭插   Node *p = new Node(val, head);   head = p; }  void Node::insertTail(int val){//尾插   Node *p = new Node(val, 0);   if (!head)   {     head = p;     return;   }   Node *q = head;   while (q->next)   {     q = q->next;   }   q->next = p; }  void Node::delHead(){//刪頭   Node *p = head;   if (head)   {     head = head->next;     delete p;   } }  void Node::delTail(){//刪尾   if (!head)   {     return;   }   if (!(head->next))   {     delete(head);     head = NULL;     return;   }   Node *p = head;   while (p->next->next)   {     p = p->next;   }   delete(p->next);   p->next = NULL; }  void Node::clear(){//清空   Node *p = head;   Node *q = 0;   head = 0;   while (p)   {     q = p;     p = p->next;     delete q;   } }  void main(){   Node::delHead();   Node::delTail();   Node::insertTail(2);   Node::delTail();   for (int i = 0; i < 10; i++)   {     Node::insertTail(i + 1);   }   Node::delTail();   Node::showAll(); } 

利用類模板構(gòu)建鏈表
這有點(diǎn)類似于list<>:

#include <iostream> #include <string> using namespace std;  template<class T> class Node//創(chuàng)建一個(gè)類模板,一個(gè)可以放入任何類型節(jié)點(diǎn)的鏈表 { public:   Node(T val, Node* next):val(val),next(next){}   static void showAll();//打印全部節(jié)點(diǎn)的值   static void insertHead(T);//頭插   static void insertTail(T);//尾插   static void delHead();//刪頭   static void delTail();//刪尾   static void clear();//清空 protected:   T val;   Node *next;   static Node *head; private: };  template<class T> Node<T>* Node<T>::head = 0;  template<class T> void Node<T>::showAll(){//打印全部節(jié)點(diǎn)的值   Node *p = head;   while (p)   {     cout<<p->val<<" ";     p = p->next;   }   cout<<endl; }  template<class T> void Node<T>::insertHead(T val){//頭插   Node *p = new Node(val, head);   head = p; }  template<class T> void Node<T>::insertTail(T val){//尾插   Node *p = new Node(val, 0);   if (!head)   {     head = p;     return;   }   Node *q = head;   while (q->next)   {     q = q->next;   }   q->next = p; }  template<class T> void Node<T>::delHead(){//刪頭   Node *p = head;   if (head)   {     head = head->next;     delete p;   } }  template<class T> void Node<T>::delTail(){//刪尾   if (!head)   {     return;   }   if (!(head->next))   {     delete(head);     head = NULL;     return;   }   Node *p = head;   while (p->next->next)   {     p = p->next;   }   delete(p->next);   p->next = NULL; }  template<class T> void Node<T>::clear(){//清空   Node *p = head;   Node *q = 0;   head = 0;   while (p)   {     q = p;     p = p->next;     delete q;   } }  class Student//創(chuàng)建一個(gè)自定義的學(xué)生類 { public:   Student(string name, int age,char sex):name(name), age(age), sex(sex){}   void showInfo(){     cout<<"姓名:"<<name<<" 年齡:"<<age<<" 性別:"<<sex<<endl;   } protected:   string name;   int age;   char sex; private: };  void Node<Student>::showAll(){//學(xué)生類節(jié)點(diǎn)和其他基本數(shù)據(jù)類型不同,不能直接用<<輸出,所以重載showAll()   Node *p = head;   while (p)   {     p->val.showInfo();     p = p->next;   } }  void main(){   for (int i = 1; i < 10; i++)   {     Node<int>::insertTail(i);//這時(shí)Node<int>稱為一個(gè)用類模板生成的模板類     Node<float>::insertTail(i / 10.0f);     Node<double>::insertTail(i / 10.00);     Node<Student>::insertTail(Student("stu", i, 'F'));   }   Node<int>::showAll();   Node<float>::showAll();   Node<double>::showAll();   Node<Student>::showAll(); } 

C++,靜態(tài)成員,類模板,鏈表



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 云南省| 双城市| 上虞市| 稻城县| 桦甸市| 临夏市| 承德市| 南漳县| 灵武市| 方城县| 黄梅县| 木里| 云龙县| 泰兴市| 平邑县| 昭觉县| 双柏县| 紫阳县| 韶关市| 清丰县| 潼南县| 兴化市| 莲花县| 谷城县| 隆林| 花莲市| 两当县| 射阳县| 甘洛县| 岑巩县| 石狮市| 剑川县| 安顺市| 泸西县| 凌海市| 奉化市| 永和县| 故城县| 宣武区| 新和县| 洛宁县|