在插入istream c ++时对单链表进行排序

时间:2011-04-27 13:12:00

标签: c++ sorting singly-linked-list

对于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
};

1 个答案:

答案 0 :(得分:0)

看看这是否能帮助您正确思考问题:

你从一副牌面朝上开始。你想要对卡片组进行排序,但你必须遵循一些奇怪的规则。

您放置未分类的牌组,这样您才能看到顶牌。首先将第一张卡片移动到您的分拣堆(一张卡片按顺序自动排列)。

查看下一张未分类的卡片。如果它比顶部排序的卡更大(或更小,无论如何),则将顶部排序的卡移动到第三堆。继续将卡逐个移动到第三堆,直到您的新卡小于下一个已排序的卡或排序的堆是空的,然后将未分类的卡移动到已排序的堆上。将卡片从第三堆一个接一个地移回到分拣堆中。

重复上一步,直到未分类的桩为空。