返回信息流#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;
}
逻辑可能没有错误,看看哪里是不是数组越界了,我都正崩溃了!
这是一条镜像帖。来源:北邮人论坛 / cpp / #29988同步于 2009/10/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
帮忙看看那个地方有错误
laser
2009/10/15镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复