BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #29988同步于 2009/10/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

帮忙看看那个地方有错误

laser
2009/10/15镜像同步1 回复
#include <stdio.h> #include <stdlib.h> typedef struct TNode/*定义结点类型*/ { int data; int indexparent; }TNode; int Local(int data); int GetIndex(int a[], int b[]); void Run(int n); int main() { int loopn, loopi=0; /*循环的次数和循环控制*/ int n; //结点的个数 scanf("%d",&loopn); //输入要循环的次数 for(loopi=0; loopi<loopn; loopi++) { scanf("%d", &n); Run(n); } return 1; } void Run(int n) { int i, k; int node1, node2, local1, local2; int *a, *b; TNode *T = (TNode *)malloc(sizeof(TNode)*n); a = (int *)malloc(sizeof(int)*(n+1)); b = (int *)malloc(sizeof(int)*(n+1)); for (i=0; i<n; i++) { T[i].data=i+1; T[i].indexparent=-1; } for (i=0; i<n-1; i++)//建立关系 { scanf("%d%d", &node1, &node2); local1=Local(node1); local2=Local(node2); T[local2].indexparent = local1; } /*-----------------------------------------------*/ scanf("%d%d", &node1, &node2); local1 = Local(node1); local2 = Local(node2); i=local1; k=0; while(i!=-1) { a[k]=i; k++; i = T[i].indexparent; } a[k]=-1; i = local2; k = 0; while(i!=-1) { b[k] = i; k++; i = T[i].indexparent; } b[k] =-1; printf("%d\n", T[GetIndex(a,b)].data); free(T); free(a); free(b); } int Local(int data)//找到指定节点的位置 { int index=data-1; return index; } int GetIndex(int a[], int b[]) { int i=0,j; while(a[i] != -1) { j = 0; while(b[j] != -1) { if (a[i] == b[j]) { return a[i]; } j++; } i++; } return -1; } 逻辑可能没有错误,看看哪里是不是数组越界了,我都正崩溃了!
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
zwp机器人#1 · 2009/10/16
while(i!=-1) { a[k]=i; //这个地方 k++; i = T[i].indexparent; }