对于c ++来说,我是世界上最基本的人,我想知道你们是否可以帮助我,如果可以的话。我试图在读取到istream的节点上进行排序,但是在读取AS时。网上的代码非常复杂,我想知道是否有一种非常基本的方法可以实现这一点。
这是我的Read方法,到目前为止,它读入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;
}
}
这是我头文件中的Node类
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
};
答案 0 :(得分:0)
看看这是否能帮助您正确思考问题:
你从一副牌面朝上开始。你想要对卡片组进行排序,但你必须遵循一些奇怪的规则。
您放置未分类的牌组,这样您才能看到顶牌。首先将第一张卡片移动到您的分拣堆(一张卡片按顺序自动排列)。
查看下一张未分类的卡片。如果它比顶部排序的卡更大(或更小,无论如何),则将顶部排序的卡移动到第三堆。继续将卡逐个移动到第三堆,直到您的新卡小于下一个已排序的卡或排序的堆是空的,然后将未分类的卡移动到已排序的堆上。将卡片从第三堆一个接一个地移回到分拣堆中。
重复上一步,直到未分类的桩为空。