程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++單向鏈表實現代碼解讀

C++單向鏈表實現代碼解讀

編輯:C++入門知識

C++編程語言是一款應用廣泛的計算機應用語言。我們在這篇文章中為大家介紹的是關於C++單向鏈表的實現方法。希望初學者們可以通過本文介紹的內容充分掌握這方面的知識,並從中體驗到這款語言功能的強大。

C++單向鏈表實現代碼:

  1. #include < iostream>   
  2. using namespace std;   
  3. template < class T>   
  4. struct node   
  5. {   
  6. //public:   
  7. // 結構體成員默認就是public的  
  8. T data;   
  9. node< T> *next;   
  10. };   
  11. //typedef struct node NODE;   
  12. //typedef NODE *NODEPTR;   
  13. //typedef後面要跟具體的類類型,而不是一個類模版。eg: typedef node< T> 
    NODE (C++中,實例化結構體時struct可省略)  
  14. template < class T>   
  15. class list   
  16. {   
  17. public:  
  18. //以下三個函數要供外部調用,所以要聲明為public,class默認為private。  
  19. /*  
  20. void creat(T &p);   
  21. void print(T p);   
  22. void destroy(T &p);   
  23. */  
  24. //這三個函數的參數有問題,按照下文的實現,我認為應改為如下:  
  25. void creat(T *p);  
  26. void print(T *p);  
  27. void destroy(T *p);  
  28. };   
  29. template< class A>   
  30. //void creat(A &p)   
  31. void list< A>::creat(A *p)  
  32. {   
  33. //class node *q;   
  34. //形參裡的A就是這個程序的node類型  
  35. char ch = 0; //下數第4行cin>>ch 中的ch未定義,在此補充  
  36. A *q = NULL;  
  37. q=p; //必須新增這一句,q用於以後的動態分配  
  38. cout< < "input"< < endl;   
  39. cin>>ch;  
  40. // if(!p) //這個if放在while裡會影響效率,故移到while外邊,
    改過程序之後,實際上用不著了  
  41. // {   
  42. //p=new struct node;   
  43. //語法錯誤,形參裡的A就是這個程序的node類型  
  44. // p = new A();  
  45. if(ch!='#')  
  46. p->data=ch;   
  47. // }   
  48. cin>>ch;  
  49. while(ch!='#')   
  50. {   
  51. //q->next=new class node;   
  52. //語法錯誤,形參裡的A就是這個程序的node類型  
  53. q->next = new A();  
  54. //q->next=ch;   
  55. //這句應該是給data賦值  
  56. q->next->data = ch;  
  57. qq = q->next; //必須新增這一句,q用於以後的動態分配  
  58. cin>>ch;   
  59. }   
  60. q->next=NULL;   
  61. }   
  62. template < class T>   
  63. void list< T>::print(T *p)   
  64. {   
  65. if(p)   
  66. {   
  67. cout< < p->data< < " ";   
  68. print(p->next);   
  69. }   
  70. }  
  71. template < class T>   
  72. void list< T>::destroy(T *p)   
  73. {   
  74. if(p)   
  75. {   
  76. destroy(p->next);   
  77. delete p->next;   
  78. }   
  79. }   
  80. int main()   
  81. {   
  82. // NODEPTR p;   
  83. node< int> p;  
  84. // list L; 模版要有參數  
  85. list<  node< int> > L;  
  86. L.creat(&p);   
  87. cout < <  endl < <  endl < <  "show:" < < endl;  
  88. L.print(&p);   
  89. L.destroy(&p);  
  90. return 0;   

實現C++單向鏈表時,程序使用了指針,如果改用引用更好些。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved