#include <bits/stdc++.h> using namespace std; void getpost(string preorder,string inorder) //根据先序和中序求后序 { int n = preorder.length(); //n为每次遍历数目 if(n > 0) { char root = preorder[0]; //根结点为先序遍历的第一个 int i = inorder.find(root); //中序遍历中根结点的所在下标 getpost(preorder.substr(1,i),inorder.substr(0,i)); //左子树 getpost(preorder.substr(i+1),inorder.substr(i+1)); //右子树 cout << root; } } int main() { string preorder,inorder; //先序遍历和中序遍历 while(cin >> preorder >> inorder) { getpost(preorder,inorder); cout << endl; } return 0; }请用c语言转换这个代码
时间: 2024-02-24 17:58:41 浏览: 65
以下是将给定的C++代码转换为等效的C语言代码:
```
#include <stdio.h>
#include <string.h>
void getpost(char* preorder, char* inorder)
{
int n = strlen(preorder);
if(n > 0)
{
char root = preorder[0];
int i = strchr(inorder, root) - inorder;
getpost(preorder + 1, inorder); // 左子树
getpost(preorder + i + 1, inorder + i + 1); // 右子树
printf("%c", root);
}
}
int main()
{
char preorder[100], inorder[100];
while(scanf("%s%s", preorder, inorder) == 2)
{
getpost(preorder, inorder);
printf("\n");
}
return 0;
}
```
请注意,C语言中没有字符串类型,因此需要使用字符数组来存储字符串。另外,C语言中没有find函数,需要使用strchr函数来查找字符在字符串中的位置。此外,需要包含stdio.h和string.h头文件。
相关问题
#include <bits/stdc++.h> using namespace std
这段代码是一个C++的头文件引用和命名空间的使用示例。具体来说,`#include <bits/stdc++.h>`是一个常用的头文件引用方式,它包含了C++标准库中的所有头文件。而`using namespace std`则是为了使用`std`命名空间中的标准库函数和对象,这样就可以直接使用`cout`、`cin`等标准输入输出流对象,而不需要写`std::cout`、`std::cin`。
这种写法虽然方便,但也存在一些问题。首先,包含了所有的标准库头文件可能会导致编译时间变长。其次,使用了`using namespace std`会将整个`std`命名空间中的所有标识符引入当前作用域,可能会导致命名冲突。因此,在实际开发中,建议根据需要只包含需要的头文件,并使用具体的命名空间来避免潜在的问题。
#include <bits/stdc++.h> using namespace std;
这个头文件是C++11标准引入的,它包含了所有标准库中的头文件。使用这个头文件可以方便地在一个地方包含所有需要的头文件,而不需要一个一个地包含。这个头文件通常只在竞赛中使用,因为它不是标准C++头文件,不保证在所有编译器中都能正常工作。
以下是一个使用这个头文件的示例,实现输入4个整数a、b、c、d,将它们倒序输出:
```cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b, c, d;
cin >> a >> b >> c >> d;
cout << d << ' ' << c << ' ' << b << ' ' << a << endl;
return 0;
}
```
阅读全文