c++中怎么实现一个单向链表,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C++单向链表实现代码:#include < iOStream>&
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);
};
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++中怎么实现一个单向链表问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网其他教程频道了解更多相关知识。
--结束END--
本文标题: C++中怎么实现一个单向链表
本文链接: https://www.lsjlt.com/news/290819.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0