我正在尝试创建一个"链接列表"而且我遇到了麻烦,我对我应该如何实施"节点"而感到有点困惑。
指向彼此的节点集合被视为链表,对吗?我试图创建一个接受数组及其大小的函数,并且我应该接受每个元素,并且能够在我将其放入列表时对其进行排序,然后把它放回到有序的数组中。我怎么能这样做?我知道节点拥有某个元素,并且指向下一个节点。 STL中是否已有结构,或者我是否必须从头开始制作?
有人可以帮助我开始吗? (除了我已经得到的东西之外)。我也不知道如何从数组的元素转到节点的元素以及如何按顺序对它们进行排序。我现在正在使用整数,我希望转向模板。非常感谢帮助!
EDIT)顺便说一下,这是一个头文件......
using namespace std;
/***********************************************
* NODE
***********************************************/
struct Node
{
int data;
Node * pNext;
};
/***********************************************
* INSERTION SORT
* Sort the items in the array
**********************************************/
//template <class T>
void sortInsertion(int array[], int num)
{
// Make sure we can list the elements unsorted
cout << "Testing sortInsertion()...\n\n";
cout << "Unsorted:\n";
for (int i = 0; i < num; i++)
cout << "num "<< i + 1 << ": " << array[i] << endl;
cout << endl;
cout << "Sorted:\n";
// Okay, make the head of the list...
Node *pHead;
// Loop through each element and insert it into the list, depending on order
for (int i = 0; i < num; i++);
// Loop through each node, and transfer each element into the array.
for(const Node *p = pHead; p; p = p -> pNext)
{
int i = 0;
array[i] = p -> data;
i++;
}
}
答案 0 :(得分:0)
这一行
for (int i = 0; i < num; i++);
相当于
i = num;
这个
for(const Node * p = pHead; p; p = p - &gt; pNext) { int i = 0; array [i] = p - &gt;数据; 我++; }
我认为有编译错误 - 但是如果它确实只是设置array
中的第一项
但为什么不使用STL?