|
发表于 2004-3-9 23:34:00
|
显示全部楼层
如果是普通的数据并到LIST数据链 Tx,很简单,比如整数,
buf = ads_buildlist(RTLONG, mynum, 0);
建立一个主结点;
如果是LIST数据链MyList 要并入Tx,必须在数据链MyList的并入处的前、后分别插入RTLB,和 RTLE结点。
比如,现有整数 n, LIST数据链MyList, 实数r 三组数据:
void Demo (int n, struct resbuf MyList, ads_real r)
{
struct resbuf head=NULL, end, tmp, p;
head = ads_buildlist(RTLONG, n, 0);
end = head;
tmp = ads_buildlist(RTLB, 0);
end->rbnext = tmp;
end = tmp;
for (p = MyList; p; p=p->rbnext) {
tmp = xxx_DupLIst (p); //把一个结点的数据复制过来,具体实现 (略)
end->rbnext = tmp;
end= tmp;
}
tmp = ads_buildlist(RTLE, 0);
end->rbnext = tmp;
end = tmp;
tmp = ads_buildlist(RTREAL, r, 0);
end->rbnext = tmp;
end = tmp;
ads_retlist(head);
}
在LISP中用(nth)就可以依次取出数据。
对于整数,最好用RTLONG,而不要用RTINT,否则可能会使大的整数失真。
我上面是用ADS函数编写,与ARX完全兼容。事实上这样做更为简单些。 |
|