在Android stdio中,解释:if (i < infix.length) ch = infix.get(i)
时间: 2024-05-28 11:11:01 浏览: 11
这行代码的作用是,判断当前索引 i 是否小于中缀表达式 infix 的长度,如果是,就将索引 i 对应的字符赋值给变量 ch。其中 infix.get(i) 是获取中缀表达式 infix 中索引为 i 的字符。如果 i 大于等于 infix 的长度,说明已经遍历完了中缀表达式,此时不再需要获取字符,因此不会执行赋值操作。注意,这行代码的索引从0开始,因此当 i 等于 infix.length 时,说明已经遍历到了最后一个字符。
相关问题
在此代码中添加一个二叉树的后序遍历#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAXSIZE 10001 typedef struct { char elem[16]; int length; } SqList; SqList L[MAXSIZE]; int n=0; void LocateElem(SqList s, int n) { int i,j,flag=1,sum,l; for(i=0;i<n;i++) { if(strcmp(L[i].elem,s.elem)==0) { printf("%s is correct\n",s.elem); flag=0; break; } } if(flag) { printf("%s:",s.elem); for(i=0;i<n;i++) { sum=l=0; if(L[i].length==s.length) { for(j=0;j<s.length;j++) { if(L[i].elem[j]!=s.elem[j]) { sum++; } if(sum>1) break; } if(sum<=1) printf(" %s",L[i].elem); } if(L[i].length==s.length+1) { for(j=0;j<s.length;j++,l++) { if(L[i].elem[l]!=s.elem[j]) { j--; sum++; } if(sum>1) break; } if(sum<=1) printf(" %s",L[i].elem); } if(L[i].length==s.length-1) { for(j=0;j<s.length;j++,l++) { if(L[i].elem[l]!=s.elem[j]) { l--; sum++; } if(sum>1) break; } if(sum<=1) printf(" %s",L[i].elem); } } printf("\n"); } } int main() { while(scanf("%s", L[n].elem) != EOF){ if(L[n].elem[0]=='#') break; L[n].length=strlen(L[n].elem); n++; } SqList s; while(scanf("%s", s.elem) != EOF){ if(s.elem[0]=='#') break; s.length=strlen(s.elem); LocateElem(s,n); } return 0; }
这段代码中已经没有二叉树的结构了,所以需要重新添加。在这里,我们可以利用递归的方式实现二叉树的后序遍历。下面是修改后的代码:
```
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 10001
typedef struct {
char elem[16];
int length;
} SqList;
SqList L[MAXSIZE];
int n=0;
void LocateElem(SqList s, int n) {
int i,j,flag=1,sum,l;
for(i=0;i<n;i++) {
if(strcmp(L[i].elem,s.elem)==0) {
printf("%s is correct\n",s.elem);
flag=0;
break;
}
}
if(flag) {
printf("%s:",s.elem);
for(i=0;i<n;i++) {
sum=l=0;
if(L[i].length==s.length) {
for(j=0;j<s.length;j++) {
if(L[i].elem[j]!=s.elem[j]) {
sum++;
}
if(sum>1) break;
}
if(sum<=1) printf(" %s",L[i].elem);
}
if(L[i].length==s.length+1) {
for(j=0;j<s.length;j++,l++) {
if(L[i].elem[l]!=s.elem[j]) {
j--;
sum++;
}
if(sum>1) break;
}
if(sum<=1) printf(" %s",L[i].elem);
}
if(L[i].length==s.length-1) {
for(j=0;j<s.length;j++,l++) {
if(L[i].elem[l]!=s.elem[j]) {
l--;
sum++;
}
if(sum>1) break;
}
if(sum<=1) printf(" %s",L[i].elem);
}
}
printf("\n");
}
}
// 二叉树结构体
typedef struct TreeNode {
char elem[16];
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 后序遍历二叉树
void postOrder(TreeNode *root) {
if (root == NULL) {
return;
}
postOrder(root->left);
postOrder(root->right);
printf("%s ", root->elem);
}
int main() {
while(scanf("%s", L[n].elem) != EOF){
if(L[n].elem[0]=='#') break;
L[n].length=strlen(L[n].elem);
n++;
}
SqList s;
while(scanf("%s", s.elem) != EOF){
if(s.elem[0]=='#') break;
s.length=strlen(s.elem);
LocateElem(s,n);
}
// 生成二叉树
TreeNode *root = (TreeNode *)malloc(sizeof(TreeNode));
root->left = NULL;
root->right = NULL;
strcpy(root->elem, L[0].elem);
for (int i = 1; i < n; i++) {
TreeNode *node = (TreeNode *)malloc(sizeof(TreeNode));
node->left = NULL;
node->right = NULL;
strcpy(node->elem, L[i].elem);
// 将节点插入二叉树
TreeNode *cur = root;
while (cur != NULL) {
if (strcmp(node->elem, cur->elem) < 0) {
if (cur->left == NULL) {
cur->left = node;
break;
} else {
cur = cur->left;
}
} else {
if (cur->right == NULL) {
cur->right = node;
break;
} else {
cur = cur->right;
}
}
}
}
// 后序遍历二叉树
printf("PostOrder: ");
postOrder(root);
printf("\n");
return 0;
}
```
在这段代码中,我们添加了一个二叉树结构体 `TreeNode`,其中包含了节点的元素值 `elem`、左子树指针 `left` 和右子树指针 `right`。我们通过循环读取输入的字符串数组,将每个元素插入到二叉树中。最后,我们调用 `postOrder` 函数来后序遍历二叉树,输出二叉树的后序遍历结果。
#include <stdio.h> #include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef struct { char data[MaxSize]; int length; } SqString; void StrAssign(SqString &s, char cstr[]) { int i; for (i = 0; cstr[i] != '\0'; i++) s.data[i] = cstr[i]; s.length = i; } void DispStr(SqString s) { if (s.length > 0) { for (int i = 0; i < s.length; i++) printf("%c", s.data[i]); printf("\n"); } } SqString A, B; SqString EnCrypt(SqString p) { int i = 0, j; SqString q; while (i < p.length) { for (j = 0; p.data[i] != A.data[j] && j <= A.length; j++) if (j >= A.length) q.data[i] = p.data[i]; else q.data[i] = B.data[j]; i++; } q.length = p.length; return q; } SqString UnEncrypt(SqString q) { int i = 0, j; SqString p; while (i < q.length) { for (j = 0; q.data[i] != B.data[j] && j <= B.length; j++); if (j >= B.length) p.data[i] = q.data[i]; else p.data[i] = A.data[j]; i++; } p.length = q.length; return p; } int main() { SqString q, p; int ok = 1; StrAssign(A, "abcdefghijklmnopqrstuvwxyz"); StrAssign(B, "ngzqtcobmuhelkpdawxfyivrsj"); char str[MaxSize]; printf("输入原文串:"); gets(str); StrAssign(p, str); printf("\n加密解密如下:\n"); printf("\n 原文串:"); DispStr(p); q = EnCrypt(p); printf("\n 加密串:"); DispStr(q); p = UnEncrypt(q); printf("\n 解密串:"); DispStr(p); printf("\n"); return 1; }改bug
在 EnCrypt 函数和 UnEncrypt 函数中,SqString 类型的变量 q 和 p 没有初始化,需要在函数内部进行初始化:
SqString EnCrypt(SqString p) {
int i = 0, j;
SqString q;
StrAssign(q, ""); // 初始化为空字符串
while (i < p.length) {
for (j = 0; p.data[i] != A.data[j] && j <= A.length; j++)
if (j >= A.length)
q.data[i] = p.data[i];
else
q.data[i] = B.data[j];
i++;
}
q.length = p.length;
return q;
}
SqString UnEncrypt(SqString q) {
int i = 0, j;
SqString p;
StrAssign(p, ""); // 初始化为空字符串
while (i < q.length) {
for (j = 0; q.data[i] != B.data[j] && j <= B.length; j++);
if (j >= B.length)
p.data[i] = q.data[i];
else
p.data[i] = A.data[j];
i++;
}
p.length = q.length;
return p;
}
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![h](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)