请教一个数据结构的简单问题。

康斯坦汀 2011-10-31 02:48:15
假设一个矩形的四个顶点是四个对象,如何做到,从一个顶点出发遍历一遍各个顶点?不同方向的(比如顺时针
和拟时针)这是链表问题么?如何设计一个顶点的属性?
就是一个顶点最小存储什么对象可以从不同角度遍历? 比如一个节点对象存储向右和向左的两个关联对象的信息?
然后传递到下一个对象如此遍历?
如果不是矩形而是多边形怎么办?
...全文
139 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyu821120 2011-10-31
  • 打赏
  • 举报
回复
这种问题,看下数据结构,《图论》,就知道了。如果没有记错,一共有两种。一种是稀疏矩阵,一种是链表。遍历就是bfs或者dfs。
康斯坦汀 2011-10-31
  • 打赏
  • 举报
回复
更正:如何从一个元件出发
康斯坦汀 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sdl2005lyx 的回复:]

感觉这个问题有点怪怪的!楼主想做图形系统?还是。。。。
对于图形系统,矩形不会存4个顶点,存左上和右下两个点就够了!
多边形:存List<Point>,Draw是,序号n与n+1之间的画直线。。。
[/Quote]

确实是跟图形系统有关,描述的可能不是很清楚,只是以矩形为例子,
换种描述方法:
比如 一个图形系统,可以考虑成类似Visio,有很多元件,元件和元件之间
用连接线连接,一个元件可能跟多个元件连接,如果从一个元件出发,遍历所有跟它关联的
元件,要实现这种遍历,元件的属性应该定义什么?

刚看了些数据结构方面的东西,感觉数据结构中的“图”,貌似是解决该问题的,只是这块儿不熟。
欢迎大家继续讨论。。。
mikeowenlibo 2011-10-31
  • 打赏
  • 举报
回复
不同的方向可以理解为不同的排序方法,首先必须确定对象比较的含义,,比如说顶点,用2个坐标X,Y来描述.
顺时针排
int Compare(Object obj1,Object obj2){
if(obj1.x<obj2.x){return -1;}
else if(obj1.x>obj2.x){return 1;}
else if(obj1.x=obj2.x){
if(obj1.y<obj2.y){return -1;}else{return 1;}
}
}

逆时针

int Compare(Object obj1,Object obj2){
if(obj1.x<obj2.x){return 1;}
else if(obj1.x>obj2.x){return -1;}
else if(obj1.x=obj2.x){
if(obj1.y<obj2.y){return 1;}else{return -1;}
}
}
xiaoyu821120 2011-10-31
  • 打赏
  • 举报
回复
我想顶点属性不外乎,x,y坐标,最多加个编号,还有你说的顺时针,逆时针,相邻顶点。这是一种链式的数据结构。
简单点也可以就用个数组,数组下标就为编号,只需要保留x,y坐标就可以了。
sdl2005lyx 2011-10-31
  • 打赏
  • 举报
回复
感觉这个问题有点怪怪的!楼主想做图形系统?还是。。。。
对于图形系统,矩形不会存4个顶点,存左上和右下两个点就够了!
多边形:存List<Point>,Draw是,序号n与n+1之间的画直线。。。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧