在ISTRAM+C++中插入单链表 当我谈到C++时,我是世界上最基本的人,我想知道你们是否能帮助我,如果那是可以的话。我试图在读入istream的节点上进行排序,但当它们被读入时。网络上的代码非常复杂,我想知道是否有一个非常基本的方法来实现这一点

在ISTRAM+C++中插入单链表 当我谈到C++时,我是世界上最基本的人,我想知道你们是否能帮助我,如果那是可以的话。我试图在读入istream的节点上进行排序,但当它们被读入时。网络上的代码非常复杂,我想知道是否有一个非常基本的方法来实现这一点,c++,sorting,singly-linked-list,C++,Sorting,Singly Linked List,这是我的Read方法,到目前为止,它读入了istream,这很好,但现在我需要将其作为Read-in进行排序。我的头好痛哈哈 void ListClass::Read(istream& r) { char c[13]; r >> c; r >> numberOfInts; Node *node = new Node(); head = node; for(int i = 0; i < numberOfInt

这是我的Read方法,到目前为止,它读入了istream,这很好,但现在我需要将其作为Read-in进行排序。我的头好痛哈哈

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

}

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

你从一副正面朝上的牌开始。你想对一副牌进行分类,但你必须遵循一些奇怪的规则

放置未排序的一副牌,以便只能看到最上面的牌。首先将第一张卡片移动到已排序的堆中,一张卡片将自动按排序顺序排列

看下一张未分类的卡片。如果大于或小于顶部排序的卡片,则将顶部排序的卡片移动到第三堆。继续将卡片逐个移动到第三堆,直到新卡片小于下一张已排序的卡片或已排序的卡片堆为空,然后将未排序的卡片移动到已排序的卡片堆上。将卡片从第三堆依次移回已排序的一堆


重复上一步,直到未排序的堆为空。

您在web上遇到的代码的方法是什么?为了避免人们向你推荐相同的方法,一种是模板方法,另一种更适合于双链接列表和其他一些方法,但这些方法甚至让解释它的人都感到困惑。基本上我在寻找某种插入排序,我想,但当我在寻找它的时候,除了过度的插入,没有太多的插入排序complicated@Tazzy没有真正需要的模板。试着把一些复杂的因素分解成你可以在这个问题上提出的问题。我喜欢你的语言,我会有逻辑地思考这个问题,非常感谢你:
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
};