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++中怎么实现一个单向链表问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。