[英]Singly linked list C++ ostream and istream — outputs memory addresses
[英]Sort singly linked list on when inserting into istream c++
当谈到 c++ 时,我是世界上最基本的人,我想知道你们是否可以帮助我,如果可以的话。 我试图对读入 istream 的节点进行排序,但因为它们被读入。web 上的代码非常复杂,我想知道是否有一种非常基本的方法来实现这一点。
这是我的读取方法,到目前为止它读入 istream,这很棒,但现在我需要对其进行排序,因为它已读入。我的头疼哈哈
void ListClass::Read(istream& r)
{
char c[13];
r >> c;
r >> numberOfInts;
Node *node = new Node();
head = node;
for(int i = 0; i < numberOfInts; i++)
{
r >> node->data;
cout << node->data << endl;
node->next = new Node;
node = node->next;
}
}
这是我的 header 文件中的节点 class
class Node
{
public:
Node() {} //default constructor
Node(int d, Node* q = 0) : data(d), next(q) {} //constructor with parameters data and next
int data; //holds data in node
Node* next;//pointer to next node
};
看看这是否能让你正确思考这个问题:
你从一副牌面朝上开始。 您想对一副纸牌进行排序,但您必须遵循一些奇怪的规则。
您放置未分类的牌组,以便您只能看到最上面的牌。 首先将第一张卡移动到您的排序堆(一张卡自动按排序顺序)。
查看下一张未分类的卡片。 如果它比排在最前面的牌大(或小,无论如何),则将排在最前面的牌移到第三堆。 继续将卡片一张一张地移动到第三堆,直到你的新卡片小于下一张已排序的卡片或已排序的卡片为空,然后将未排序的卡片移到已排序的卡片上。 将卡片从第三堆一张一张地移回已排序的那堆。
重复上一步,直到未排序的堆为空。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.