链接的列表字符串分类问题

Linked list string sorting issue

本文关键字:分类 问题 字符串 列表 链接      更新时间:2023-10-16

问题是,如果我输入1,然后是2和123。它将排序1,123,2。
我如何使其排序1,2,123

项目是创建的记录。跑步者是遍历。

struct Records {
string Name;
string ID;
char Gender;
string Phone_Num;
Records *Next;
};
void SortRecords(Records* Item, Records* head, Records** Set_Head){
Records* Runner = head;
if (head == NULL){
    *Set_Head = Item;
}else if (Item->ID<head->ID){
    Item->Next=head;
}else{
    while(Item->ID>head->ID){
        if(Item->ID > Runner->ID && Runner->Next==NULL){
            Runner->Next=Item;
            break;
        }else if(Item->ID<Runner->Next->ID){
            Item->Next=Runner->Next;
            Runner->Next=Item;
            Runner=Item;
            cout<<Runner->Next->Name<<endl;
            break;
        }else{
            Runner=Runner->Next;
        }
    }
}

您可以使用std::stoi比较整数而不是字符串:

std::stoi(Item->ID) < std::stoi(Runner->Next->ID)

您实际上可能想存储ID作为整数,而不是字符串。

如果您可以说" 123ab",则可以提取数字:

string str = "123AB";
size_t last_index = str.find_last_of("0123456789");
string result = str.substr(0, last_index + 1); // result = "123";