您好,登錄后才能下訂單哦!
C++中怎么實現一個單向鏈表,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
C++單向鏈表實現代碼:
#include < iostream>
using namespace std;
template < class T>
struct node
{
//public:
// 結構體成員默認就是public的
T data;
node< T> *next;
};
//typedef struct node NODE;
//typedef NODE *NODEPTR;
//typedef后面要跟具體的類類型,而不是一個類模版。eg: typedef node< T>
NODE (C++中,實例化結構體時struct可省略)template < class T>
class list
{
public:
//以下三個函數要供外部調用,所以要聲明為public,class默認為private。
/*
void creat(T &p);
void print(T p);
void destroy(T &p);
*/
//這三個函數的參數有問題,按照下文的實現,我認為應改為如下:
void creat(T *p);
void print(T *p);
void destroy(T *p);
};
template< class A>
//void creat(A &p)
void list< A>::creat(A *p)
{
//class node *q;
//形參里的A就是這個程序的node類型
char ch = 0; //下數第4行cin>>ch 中的ch未定義,在此補充
A *q = NULL;
q=p; //必須新增這一句,q用于以后的動態分配
cout< < "input"< < endl;
cin>>ch;
// if(!p) //這個if放在while里會影響效率,故移到while外邊,
改過程序之后,實際上用不著了// {
//p=new struct node;
//語法錯誤,形參里的A就是這個程序的node類型
// p = new A();
if(ch!='#')
p->data=ch;
// }
cin>>ch;
while(ch!='#')
{
//q->next=new class node;
//語法錯誤,形參里的A就是這個程序的node類型
q->next = new A();
//q->next=ch;
//這句應該是給data賦值
q->next->data = ch;
qq = q->next; //必須新增這一句,q用于以后的動態分配
cin>>ch;
}
q->next=NULL;
}
template < class T>
void list< T>::print(T *p)
{
if(p)
{
cout< < p->data< < " ";
print(p->next);
}
}
template < class T>
void list< T>::destroy(T *p)
{
if(p)
{
destroy(p->next);
delete p->next;
}
}
int main()
{
// NODEPTR p;
node< int> p;
// list L; 模版要有參數
list< node< int> > L;
L.creat(&p);
cout < < endl < < endl < < "show:" < < endl;
L.print(&p);
L.destroy(&p);
return 0;
}
關于C++中怎么實現一個單向鏈表問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。