gpt4 book ai didi

c - 在C中打印n元数组的结构

转载 作者:行者123 更新时间:2023-11-30 16:35:28 25 4
gpt4 key购买 nike

我的 C 类(class)作业是将菜单实现为 ​​n 叉树。我必须创建一个struct,用数据填充它并打印数据。虽然创建结构和填充相对容易,但我发现打印很困难。我的目标是以这种方式打印结构:

  1 File
1.1 Open
1.2 Save As
1.3 Save as Other
1.3.1 Text
1.3.2 Word or Excel Online
1.4 Send File
1.4.1 Attach to Email
1.4.2 Send & Track
1.5 Close

我的挣扎是我找不到一种方法:a) 在每个子项后面添加空格。b) 为 child 的每个 child 添加编号。

我的结构如下:

typedef struct node
{
long nodeID;
long parentNodeID;
char name[100];
struct node *next;
struct node *child;
} node;

我尝试完成此任务失败了:

void printMenu(node* root){
if(root == NULL) {
fprintf(stderr, "Root has not been initialised");
exit(1);
}
if(root->parentNodeID == 0){
printf("%ld %s",root -> nodeID,root -> name);
fflush(stdout);
printMenu(root->child);
}
if(root->child){
printf("%6ld.%ld %s",root->parentNodeID,root->nodeID - 1,root->name);
fflush(stdout);
printMenu(root->child);
}



printf("%5ld.%ld %s",root->parentNodeID,root->nodeID - 1,root->name);
fflush(stdout);
printMenu(root -> next);

}

请发送帮助:(

最佳答案

我建议使用递归。下面是一个代码示例,说明了它是如何工作的。您需要以从 0 开始的间距调用此函数。这还假设parentID 是与前一个父id 相同的ID。

void printMenu(node* root, int spacing) {
if(root == NULL) {
return;
}
else {
for(int i =0; i < spacing; i++) {
printf(' ');
}
printf("%d.%d %s", root->parentNodeID, root->nodeID, root->name);
for(int i =0; i< sizeof(root->child); i++) {
printNodes(root->child[i], spacing+1);
}
}
}

关于c - 在C中打印n元数组的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48917575/

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