Java技术问询:如何将节点坐标存储至列表?
嘿,我来帮你搞定这个问题!既然你已经能读取.cav文件里的节点数和坐标信息了,把x、y坐标存入列表其实挺简单的。我分两种常用开发语言给你举实际例子,你看哪种更贴合你的项目场景:
如果你用C语言开发
C里我们可以用结构体数组来规整存储每个节点的坐标,步骤如下:
- 首先定义一个结构体,用来封装单个节点的x、y值:
typedef struct { int x; // 如果是浮点数就改成float/double int y; } Node;
- 接着根据读取到的节点数量,分配对应的内存空间(动态分配更灵活):
int node_count = 0; // 这里假设你已经从文件中读取到了正确的node_count数值 Node* nodes = (Node*)malloc(node_count * sizeof(Node));
- 然后在读取坐标的循环里,把每一对x、y存入数组:
FILE* fp = fopen("your_cave_file.cav", "r"); // 注意:这里要先跳过文件开头的非坐标内容(比如注释、节点数声明行),确保定位到坐标行 for (int i = 0; i < node_count; i++) { fscanf(fp, "%d %d", &nodes[i].x, &nodes[i].y); } fclose(fp);
- 记得在使用完数组后释放内存,避免泄漏:
free(nodes);
如果你用Python语言开发
Python的列表操作就更简洁了,直接用列表存储元组或字典都可以:
- 先初始化一个空列表,准备存坐标:
nodes = [] node_count = 0 # 假设已经从文件里读取到节点总数
- 打开文件循环读取每一行坐标,加入列表:
with open("your_cave_file.cav", "r") as f: # 先跳过文件头的无关内容,找到坐标开始的行 for _ in range(node_count): # 按空格拆分每行内容,转成整数(浮点数就用float) x, y = map(int, f.readline().strip().split()) nodes.append( (x, y) ) # 用元组存储,也可以用字典:{"x": x, "y": y}
- 之后访问起来也很方便,比如取第i个节点的x坐标:
nodes[i][0](用元组的情况)
小提醒
一定要注意.cav文件的格式细节,有些文件开头会有注释行、节点数说明行之类的内容,读取坐标前要先跳过这些行,确保你读的是正确的x、y数据哦!
内容的提问来源于stack exchange,提问作者GZoid
相关产品推荐
相关产品推荐

