6-2 变长动态数组pta
时间: 2023-03-26 20:03:06 浏览: 124
我可以回答这个问题。6-2 变长动态数组是指在程序运行时可以动态地改变数组的大小,而不需要在编写程序时确定数组的大小。这种数组通常使用指针来实现。在 C 语言中,可以使用 malloc() 函数来动态分配内存,realloc() 函数来重新分配内存大小,以实现变长动态数组的功能。
相关问题
7-2 二维数组-方阵赋值pta
这是一个编程类的问题,我可以回答。在方阵赋值问题中,我们可以使用两个嵌套的循环来遍历二维数组,并使用输入函数来为每个元素赋值。以下是一个示例代码:
#include <stdio.h>
int main() {
int n;
scanf("%d", &n); // 输入方阵的大小
int a[n][n]; // 定义二维数组
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &a[i][j]); // 为每个元素赋值
}
}
return 0;
}
这段代码可以读入一个 n*n 的方阵,并为每个元素赋值。
6-11 先序输出叶结点pta
本题需要使用二叉树的先序遍历算法,判断每个节点是否为叶子节点,如果是叶子节点则输出其值。
具体步骤如下:
1. 定义二叉树结构体和创建二叉树的函数。
```c++
#include <iostream>
using namespace std;
struct TreeNode {
char val;
TreeNode* left;
TreeNode* right;
TreeNode(char x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* createTree() {
char val;
cin >> val;
if (val == '#') {
return NULL;
}
TreeNode* root = new TreeNode(val);
root->left = createTree();
root->right = createTree();
return root;
}
```
2. 定义先序遍历函数和判断叶子节点的函数。
```c++
void preOrder(TreeNode* root) {
if (root == NULL) {
return;
}
cout << root->val << " ";
preOrder(root->left);
preOrder(root->right);
}
bool isLeaf(TreeNode* root) {
if (root == NULL) {
return false;
}
if (root->left == NULL && root->right == NULL) {
return true;
}
return false;
}
```
3. 在先序遍历的过程中,判断当前节点是否为叶子节点,如果是则输出其值。
```c++
void preOrderLeaf(TreeNode* root) {
if (root == NULL) {
return;
}
if (isLeaf(root)) {
cout << root->val << " ";
}
preOrderLeaf(root->left);
preOrderLeaf(root->right);
}
```
4. 最后在主函数中调用创建二叉树和先序遍历叶子节点的函数。
```c++
int main() {
TreeNode* root = createTree();
preOrderLeaf(root);
return 0;
}
```
完整代码如下: