一段C语言代码,麻烦大家帮我解释下。原先的代码是C写的,现在要翻译成Java的,搞得小弟这个C盲很伤

方法1
PUBLIC short *make_pair_table(const char *structure)
{
/* returns array representation of structure.
table[i] is 0 if unpaired or j if (i.j) pair. */
short i,j,hx;
short length;
short *stack;
short *table;
length = (short) strlen(structure);
stack = (short *) space(sizeof(short)*(length+1));
table = (short *) space(sizeof(short)*(length+2));
table[0] = length;
for (hx=0, i=1; i<=length; i++) {
switch (structure[i-1]) {
case '(':
stack[hx++]=i;
break;
case ')':
j = stack[--hx];
if (hx<0) {
fprintf(stderr, "%s\n", structure);
nrerror("unbalanced brackets in make_pair_table");
}
table[i]=j;
table[j]=i;
break;
default: /* unpaired base, usually '.' */
table[i]= 0;
break;
}
}
if (hx!=0) {
fprintf(stderr, "%s\n", structure);
nrerror("unbalanced brackets in make_pair_table");
}
free(stack);
return(table);
}

方法二
int naview_xy_coordinates(short *pair_table, float *X, float *Y) {
int i;

nbase = pair_table[0]; /* length */
bases = (struct base *) space(sizeof(struct base)*(nbase+1));
regions = (struct region *) space(sizeof(struct region)*(nbase+1));
read_in_bases(pair_table);
lencut = 0.5;
rlphead = NULL;
find_regions();
loop_count = 0;
loops = (struct loop *) space(sizeof(struct loop)*(nbase+1));
construct_loop(0);
find_central_loop();
if (debug) dump_loops();
traverse_loop(root,NULL);
for (i=0; i<nbase; i++) {
X[i] = 100 + 15*bases[i+1].x;
Y[i] = 100 + 15*bases[i+1].y;
}
free(bases);
free(regions);
free(loops);
return nbase;
}

方法1
PUBLIC short *make_pair_table(const char *structure)
{
/* returns array representation of structure.
table[i] is 0 if unpaired or j if (i.j) pair. */
short i,j,hx;
short length;
short *stack;
short *table;
length = (short) strlen(structure);//structure的长度
stack = (short *) space(sizeof(short)*(length+1));//stack是一个short型的指针数组,这里是分配空间
table = (short *) space(sizeof(short)*(length+2));//table和stack类似
table[0] = length;
for (hx=0, i=1; i<=length; i++) {
switch (structure[i-1]) {//访问structure数组遍历,进行括号匹配
case '(':
stack[hx++]=i;//括号开始就+1
break;
case ')':
j = stack[--hx];
if (hx<0) {
fprintf(stderr, "%s\n", structure);
nrerror("unbalanced brackets in make_pair_table");
}
table[i]=j;//存放左括号所在位置
table[j]=i;//存放右括号所在位置
break;
default: /* unpaired base, usually '.' */
table[i]= 0;
break;
}
}
if (hx!=0) {
fprintf(stderr, "%s\n", structure);
nrerror("unbalanced brackets in make_pair_table");
}
free(stack);//释放空间
return(table);//返回括号匹配结果
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-12
这让老夫如何是好....
你哪里不懂,就复制相应函数,上网找吧,如果逻辑不懂,你翻译java也会有问题吧,慢慢练习,急不得追问

本来我也这么想的,还专门看了下C 的语法,但是我的这个工具里面全是算法,很多,hold不住,也没有注释,一个方法调另一个方法的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网