gpt4 book ai didi

c++ - 对嵌套结构单链和双链进行排序

转载 作者:行者123 更新时间:2023-11-30 17:38:09 24 4
gpt4 key购买 nike

我嵌套为:

typedef struct a{
const char * LongName;
const char * ShortName;
int a;
struct a * next;
}Level5;

typedef struct a1{
const char * LongName;
const char * ShortName;
int frequency5;
int id;
Level5 * linked;
struct a1* next_a1;
}Level4;

typedef struct a2{
const char * Name;
int frequency4;
Level4 * linked;
int id;
struct a2 * next;
}Level3;

typedef struct a3{
const char * LongName;
const char * ShortName;
int frequency3
int id;
Level3 * linked;
}Level2;

typedef struct a4{
const char * LongName;
const char * ShortName;
_Bool top;
int id;
int frequency2;
Level2 * lined;
}Level1;


typedef struct cat{
int id;
const char * CatName;
Level1 * linked;
}CAT;

CAT total[256];

现在我想对链接嵌套结构进行排序,如下所示:

 1. Level 5 -> LongName

2. Level 4 -> ShortName

3. Level 3 -> Name

4. Level 2 -> Frequency3

Level 1
|
| Level 2
====================================================
| Level3 |Level3 |level 3
=============
| next next
level4 -> lev4 -> lev4
| |
| =====================================
=============================== |
| next next Level5 -> level5 -> level5
Level5 -> Level5 -> level5

最佳答案

看起来您有以下数据结构:

Level5 node --> Level5 node --> Level5 node  
|
v
Level4 node --> Level4 node --> Level4 node
|
v
Level3 node --> level3 node --> Level3 node
|
v
Level2 node --> level2 node --> Level2 node

如果是这种情况,您的数据结构可以简化:

struct Node
{
};

struct Node_Row
{
unsigned int level;
std::list<Node> nodes_in_row;
};

struct data_structure
{
std::list<Node_Row> levels;
};

您应该有一个对行进行排序的比较器函数,以及另一个对级别进行排序的比较器函数。

此外,由于您将问题标记为 C++,因此您应该为自己省去一些麻烦并使用 std::string 而不是 char *std::string 为您管理动态内存分配和释放,而 char * 则由您管理内存分配和释放。

关于c++ - 对嵌套结构单链和双链进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22203653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com