全局变量和局部变量以及&的问题
来源:互联网 发布:it招标 编辑:程序博客网 时间:2024/05/17 02:00
先输入一个字符串 然后求先中后序遍历
http://paste.ubuntu.org.cn/4213378
#include
#include
char w[100];
struct node
{
char data;
struct node *l;
struct node *r;
};
void creat(struct node *&T,char *w) //这里去掉&会无限循环**************
{
char ch;int p;
ch=*w;
if(ch=='\0') p=1;
if(ch==',') {T=NULL;w++;}
else
{
T=(struct node *)malloc(sizeof(struct node));
T->data=ch;
w++;
// printf("%c",T->data);
creat(T->l,w);
creat(T->r,w);
}
}
void travel(struct node *T)
{
if(T)
{
travel(T->l);
printf("%c",T->data);
travel(T->r);
}
}
void travel2(struct node *T)
{
if(T)
{
travel2(T->l);
travel2(T->r);
printf("%c",T->data);
}
}
void travel3(struct node *T)
{
if(T)
{
printf("%c",T->data);
travel3(T->l);
travel3(T->r);
}
}
int main()
{
struct node *head,*T;
scanf("%s",w);
T=NULL;
creat(T,w);
// printf("%c",head->r->data);
travel3(T);
printf("\n");
travel(T);
printf("\n");
travel2(T);
printf("\n");
}
你这样传参不行的,你递归调用的时候对w的++操作是不会影响到外层调用它的函数里的w的,因为你操作的是它的一个拷贝而已
(虽然他们指向的是同一块内存区域,但他们两个指针本身并不是同一个,除非你传二级指针或者一级指针的引用)
PS:我这里用了一个全局的指针
#include <stdio.h>
#include<stdlib.h>
char *w;
struct node
{
char data;
struct node *l;
struct node *r;
};
void creat(struct node *&T)
{
char ch;int p;
ch=*w;
if(ch=='\0') p=1;
if(ch==',')
{
T=NULL;
w++;
}
else
{
T=(struct node *)malloc(sizeof(struct node));
T->data=ch;
w++;
// printf("%c",T->data);
creat(T->l);
creat(T->r);
}
}
void travel(struct node *T)
{
if(T)
{
travel(T->l);
printf("%c",T->data);
travel(T->r);
}
}
void travel2(struct node *T)
{
if(T)
{
travel2(T->l);
travel2(T->r);
printf("%c",T->data);
}
}
void travel3(struct node *T)
{
if(T)
{
printf("%c",T->data);
travel3(T->l);
travel3(T->r);
}
}
int main()
{
struct node *head,*T;
char str[100];
scanf("%s",str);
w = str;
T=NULL;
creat(T);
// printf("%c",head->r->data);
travel3(T);
printf("\n");
travel(T);
printf("\n");
travel2(T);
printf("\n");
}
http://paste.ubuntu.org.cn/4213378
#include
#include
char w[100];
struct node
{
char data;
struct node *l;
struct node *r;
};
void creat(struct node *&T,char *w) //这里去掉&会无限循环**************
{
char ch;int p;
ch=*w;
if(ch=='\0') p=1;
if(ch==',') {T=NULL;w++;}
else
{
T=(struct node *)malloc(sizeof(struct node));
T->data=ch;
w++;
// printf("%c",T->data);
creat(T->l,w);
creat(T->r,w);
}
}
void travel(struct node *T)
{
if(T)
{
travel(T->l);
printf("%c",T->data);
travel(T->r);
}
}
void travel2(struct node *T)
{
if(T)
{
travel2(T->l);
travel2(T->r);
printf("%c",T->data);
}
}
void travel3(struct node *T)
{
if(T)
{
printf("%c",T->data);
travel3(T->l);
travel3(T->r);
}
}
int main()
{
struct node *head,*T;
scanf("%s",w);
T=NULL;
creat(T,w);
// printf("%c",head->r->data);
travel3(T);
printf("\n");
travel(T);
printf("\n");
travel2(T);
printf("\n");
}
你这样传参不行的,你递归调用的时候对w的++操作是不会影响到外层调用它的函数里的w的,因为你操作的是它的一个拷贝而已
(虽然他们指向的是同一块内存区域,但他们两个指针本身并不是同一个,除非你传二级指针或者一级指针的引用)
PS:我这里用了一个全局的指针
#include <stdio.h>
#include<stdlib.h>
char *w;
struct node
{
char data;
struct node *l;
struct node *r;
};
void creat(struct node *&T)
{
char ch;int p;
ch=*w;
if(ch=='\0') p=1;
if(ch==',')
{
T=NULL;
w++;
}
else
{
T=(struct node *)malloc(sizeof(struct node));
T->data=ch;
w++;
// printf("%c",T->data);
creat(T->l);
creat(T->r);
}
}
void travel(struct node *T)
{
if(T)
{
travel(T->l);
printf("%c",T->data);
travel(T->r);
}
}
void travel2(struct node *T)
{
if(T)
{
travel2(T->l);
travel2(T->r);
printf("%c",T->data);
}
}
void travel3(struct node *T)
{
if(T)
{
printf("%c",T->data);
travel3(T->l);
travel3(T->r);
}
}
int main()
{
struct node *head,*T;
char str[100];
scanf("%s",str);
w = str;
T=NULL;
creat(T);
// printf("%c",head->r->data);
travel3(T);
printf("\n");
travel(T);
printf("\n");
travel2(T);
printf("\n");
}
0 0
- 全局变量和局部变量以及&的问题
- 局部变量和全局变量的相关问题
- 全局变量和局部变量的问题
- 局部变量和全局变量以及成员变量的区别
- 局部变量和全局变量以及成员变量的区别
- 对“C++添加一个头文件和extern以及全局变量和局部变量问题”的解释
- 全局变量和局部变量的区别以及实现
- static和全局变量和局部变量的问题
- js 中局部变量和全局变量输出遇到的问题
- C中全局变量和局部变量的初始化问题
- JS中最经典的全局变量和局部变量问题
- JS中最经典的全局变量和局部变量问题
- java同名全局变量和局部变量的问题
- JS中最经典的全局变量和局部变量问题
- JS中最经典的全局变量和局部变量问题
- java同名全局变量和局部变量的问题
- java 局部变量和全局变量问题
- java 局部变量和全局变量问题
- finished with non-zero exit value 2
- c++构造json数组
- C++第五次实验
- hdu 1102 Constructing Roads (最小生成树)
- 进程与线程与进程通信BLABLA
- 全局变量和局部变量以及&的问题
- opencv-python 摄像头的简单应用
- 2014第五届蓝桥杯C/C++程序设计本科B组决赛
- 在没有activity的时候使用getContentResolver方法
- 应用性能优化
- java的String类中的null和isEmpty()的区别
- 全文索引----中文分词器mmseg4j
- leetcode.150. Evaluate Reverse Polish Notation
- The police and cooker 2