用 list 处理树状数据(邻接列表)
现有一个数组
[解决办法]

斑竹对无限级树情有独钟。
每次看都有新收获。
[解决办法]

[解决办法]
前排 学习!
[解决办法]
学习了。呵呵
[解决办法]

[解决办法]
原来是这样表现的。
[解决办法]
真简洁,学习了。
[解决办法]
写的不错啊,学习了
[解决办法]
static void Main(string[] args)
{
double a, b, c, p, h, area;
Console.Write("请输入三角形的边A: ");
string s = Console.ReadLine();
a = double.Parse(s);
Console.Write("请输入三角形的边B: ");
s = Console.ReadLine();
b = double.Parse(s);
Console.Write("请输入三角形的边C: ");
s = Console.ReadLine();
c = double.Parse(s);
if (a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a)
{
Console.WriteLine("三角形的三边分别为:a={0},b={1},c={2}", a, b, c);
p = a + b + c;
h = p / 2;
area = Math.Sqrt(h * (h - a) * (h - b) * (h - c));
Console.WriteLine("三角形的周长={0},面积={1}",p,area);
}
else Console.WriteLine("无法构成三角形!");
Console.ReadKey();
}
[解决办法]
不好意思,上面那个发错了。。。我不是故意的。。我是想试一下这个编辑器的功能
[解决办法]
学习了

[解决办法]
牛X,学习了

[解决办法]

http://www.javadad.com
[解决办法]
学习了 版主
[解决办法]
不错,学习学习了
[解决办法]
很不错,学习了
[解决办法]
支持一下

[解决办法]
hao......
[解决办法]
观摩,学习,支持,接分
[解决办法]
厉害啊111111
[解决办法]
学习了。

[解决办法]

[解决办法]
谢谢楼主分享
[解决办法]
谢谢楼主分享,学习啦!
[解决办法]
学习了

[解决办法]
眩技那

[解决办法]
简洁明了 树 总是用递归方便
[解决办法]
真的很不错,很有用,可以学习学习
[解决办法]

[解决办法]
LZ的思路和我用的思路是一样的,但代码比我的要少很多,比我高明多了。
这种算法的思路就是建立一人以parent_id为键名的二级数组,用递归调用这个数组。
array(2978) {
[0]=>
object(stdClass)#1 (4) {
["id"]=>
string(8) "50094064"
["subject"]=>
string(22) "在线影视/电子书"
["parent_id"]=>
int(0)
["type_id"]=>
int(0)
}
.........
上面是组织形式,个人习惯把这分类生成对象保存到txt文本里面,生成的有自定义键名,不能直接list(),用array_values取出后,再用list还是不正常,又换了$t的元素键名,还是不正常。
//源数组 转化了数组 下面是foreach里面的内容 这个list形式不能用
$t=array_values($t);
list($id,$a[$pid][$t[$id],$pid,$tid) = $t;
于是又改了一下,能用了。
//源数据转换成了对象
foreach($object_tmp as $t) {
$t=array($t->subject,$t->id,$t->parent_id);
list($a[$pid][$id],$id,$pid) = $t;
}
不过,换了一位置。
//源数据转换成了对象
foreach($object_tmp as $t) {
$t=array($t->id,$t->subject,$t->parent_id);
list($id,$a[$pid][$id],$pid) = $t;
}
又不能用了,看了半天list的说明,也没能找到答案
[解决办法]
附上本人原来的做法:
对于list转化二维数组的,个人采取比较笨拙的方法,源数组与上面的类似
//以父级id为键名的 更多一维的(一般3维)数组
$tmp=array();
foreach ($item_category as $it){
if( count($tmp[$it["parent_id"]]) ){
$tmp[$it["parent_id"]][count($tmp[$it["parent_id"]])]=$it;
}else{
$tmp[$it["parent_id"]][0]=$it;
}
}
$tmp就是相当于LZ方法的数组$a
从项目文件里面拿出来的,写在控制器里面的,就不改了
//用于存放数据(整理好的)的公共变量
var $sorta=array();
//树形排序核心部分 pid:父级起始 tmp以父级id为第一维的数组
public function get_all_($pid,$tmp){
$tt=$tmp[$pid];
foreach($tt as $ttt){
$this->sorta[count($this->sorta)]=$ttt;
$this->get_all_($ttt["id"],$tmp);
}
}
[解决办法]
换成javascript的就最好
[解决办法]
学习了,不错
[解决办法]
不错不错,这个必须收藏一下。
------解决方案--------------------
好 很简单 方便了
[解决办法]
错不错,这个必须收藏一下。
[解决办法]
学习了 方法很简便
[解决办法]
学习了 方法很简便
[解决办法]
学习了

