在线 高分等答案!

2025-03-06 11:23:22
推荐回答(2个)
回答1:

C++标准库里有一个list模板,用#include 导入,比自己实现的专业多了。
这是MSDN上一个例子,希望对你有帮助:
// list_class_list.cpp
// compile with: /EHsc
#include
#include

int main( )
{
using namespace std;
list ::iterator c1_Iter, c2_Iter, c3_Iter, c4_Iter, c5_Iter, c6_Iter;

// Create an empty list c0
list c0;

// Create a list c1 with 3 elements of default value 0
list c1( 3 );

// Create a list c2 with 5 elements of value 2
list c2( 5, 2 );

// Create a list c3 with 3 elements of value 1 and with the
// allocator of list c2
list c3( 3, 1, c2.get_allocator( ) );

// Create a copy, list c4, of list c2
list c4(c2);

// Create a list c5 by copying the range c4[_First, _Last)
c4_Iter = c4.begin( );
c4_Iter++;
c4_Iter++;
list c5( c4.begin( ), c4_Iter );

// Create a list c6 by copying the range c4[_First, _Last) and with
// the allocator of list c2
c4_Iter = c4.begin( );
c4_Iter++;
c4_Iter++;
c4_Iter++;
list c6( c4.begin( ), c4_Iter, c2.get_allocator( ) );

cout << "c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;

cout << "c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;

cout << "c3 =";
for ( c3_Iter = c3.begin( ); c3_Iter != c3.end( ); c3_Iter++ )
cout << " " << *c3_Iter;
cout << endl;

cout << "c4 =";
for ( c4_Iter = c4.begin( ); c4_Iter != c4.end( ); c4_Iter++ )
cout << " " << *c4_Iter;
cout << endl;

cout << "c5 =";
for ( c5_Iter = c5.begin( ); c5_Iter != c5.end( ); c5_Iter++ )
cout << " " << *c5_Iter;
cout << endl;

cout << "c6 =";
for ( c6_Iter = c6.begin( ); c6_Iter != c6.end( ); c6_Iter++ )
cout << " " << *c6_Iter;
cout << endl;
return 0;
}
----------------------------------------------------------------------
输出结果:
c1 = 0 0 0
c2 = 2 2 2 2 2
c3 = 1 1 1
c4 = 2 2 2 2 2
c5 = 2 2
c6 = 2 2 2

回答2:

晕,链表只是个数据结构而已,和语言无关,是一种概念性的东西。
而且C++可以兼容C,在C++里面一样可以用struct和指针搭建链表。

不过C++的一个好处就是有标准模版库,链表直接在库里面给你提供好了,就是std::list,如楼上所演示的那样。

回到你的问题本身:
其实C++中class和struct本质是一样的,只不过class默认成员的访问性是private的而已。你完全可以把class当作struct用,只要在class内部指定访问性为public即可。
剩下的就和C中的节点实现一样了。