void rankNode(Node* head,int data)
{
//类似于删除节点的操作,定义两个指针,相互递进
Node* findNode=head->next;
Node* frontNode = head;
while ( findNode->data < data) //不同在于这里指针递进的判断条件为,当前数据小于插入的数据则指针后移
//如果逆向排序的话,判断条件则会相反,以此类推
{
frontNode = findNode;
findNode = frontNode->next;
}
Node* newnode = (Node*)malloc(sizeof(Node));
if (newnode)
{
newnode->data = data; //关键点:当前获取的节点是大于输入的数据的节点
newnode->next = frontNode->next; //所以要将前一个指针的next指针赋给新插入的节点
frontNode->next = newnode; //再将前一个节点的next指针,指向插入的新节点
}
};
为直观所以省去了判断部分,以下为完整代码!
void rankNode(Node* head,int data)
{
//类似于删除节点的操作,定义两个指针,相互递进
Node* findNode=head->next;
Node* frontNode = head;
if (findNode == nullptr) //判断节点是否为空
{
cout << "节点为空,请插入节点" << endl;
return;
}
else
{
while ( findNode->data < data) //不同在于这里指针递进的判断条件为,当前数据小于插入的数据则指针后移
//如果逆向排序的话,判断条件则会相反,以此类推
{
frontNode = findNode;
findNode = frontNode->next;
}
Node* newnode = (Node*)malloc(sizeof(Node));
if (newnode)
{
newnode->data = data; //关键点:当前获取的节点是大于输入的数据的节点
newnode->next = frontNode->next; //所以要将前一个指针的next指针赋给新插入的节点
frontNode->next = newnode; //再将前一个节点的next指针,指向插入的新节点
}
}
};