var ( 阴 = 0 阳 = 1 ) type 爻 struct { 排列数组 [3]interface{} //阴阳数组,这边是本是组合数组的,但考虑到以后的改变,同时排列可以用于组合,故用之 数值 int //[0,1] 阴爻:101 阳爻:010 } var ( 阴爻 爻 = 爻{ 排列数组:&[3]interface{阳, 阴, 阳}, 数值: 010, } 阳爻 爻 = 爻{ 排列数组:&[3]interface{阴, 阳, 阴}, 数值: 010, } )
时间: 2024-03-23 09:40:40 浏览: 41
这段代码的问题在于 `排列数组` 字段的类型是 `[3]interface{}`,这样会导致在使用该字段时需要进行类型转换,而这会影响代码的可读性和性能。
如果 `排列数组` 字段只包含阴阳属性,可以将其类型修改为 `[3]int`,这样就可以避免类型转换的问题,同时也可以提高代码的可读性和性能。例如:
```
type 爻 struct {
排列数组 [3]int // 阴阳数组
数值 int // [0,1] 阴爻:101 阳爻:010
}
var (
阴爻 爻 = 爻{
排列数组: [3]int{阳, 阴, 阳},
数值: 010,
}
阳爻 爻 = 爻{
排列数组: [3]int{阴, 阳, 阴},
数值: 010,
}
)
```
在这个例子中,将 `排列数组` 字段的类型修改为 `[3]int`,同时将 `阳` 和 `阴` 的值改为 `1` 和 `0`,这样就可以避免类型转换的问题,同时也可以提高代码的可读性和性能。
相关问题
typedef char VType;//顶点类型 typedef int WType;//权值类型 struct graph { VType V[MaxSize];//一维数组存储顶点 WType R[MaxSize][MaxSize];//二维数组存储关系 int v_num;//顶点个数 int arc_num;//边或弧的数目 }Graph;从键盘获取图中顶点数据和关系 //1.获取顶点数据进行存储 //2.关系数组进行赋初值 //3.获取关系进行相应位置的存储//打印函数
以下是一个简单的实现,可以从键盘获取顶点数据和关系,并打印出图的信息:
```c++
#include <iostream>
using namespace std;
typedef char VType; //顶点类型
typedef int WType; //权值类型
const int MaxSize = 100; //最大顶点数
struct graph {
VType V[MaxSize]; //一维数组存储顶点
WType R[MaxSize][MaxSize]; //二维数组存储关系
int v_num; //顶点个数
int arc_num; //边或弧的数目
};
//从键盘获取图中顶点数据和关系
void createGraph(graph &G) {
cout << "请输入顶点个数:";
cin >> G.v_num;
cout << "请输入边或弧的数目:";
cin >> G.arc_num;
//获取顶点数据
for (int i = 0; i < G.v_num; i++) {
cout << "请输入第" << i+1 << "个顶点:";
cin >> G.V[i];
}
//关系数组进行赋初值
for (int i = 0; i < G.v_num; i++) {
for (int j = 0; j < G.v_num; j++) {
G.R[i][j] = 0;
}
}
//获取关系进行相应位置的存储
for (int k = 0; k < G.arc_num; k++) {
int i, j, w;
cout << "请输入一条边(起点 终点 权值):";
cin >> i >> j >> w;
G.R[i-1][j-1] = w; //存储边的权值,注意要将输入的下标减1
}
}
//打印函数
void printGraph(graph G) {
cout << "顶点个数为:" << G.v_num << endl;
cout << "边或弧的数目为:" << G.arc_num << endl;
cout << "顶点信息为:";
for (int i = 0; i < G.v_num; i++) {
cout << G.V[i] << " ";
}
cout << endl;
cout << "关系矩阵为:" << endl;
for (int i = 0; i < G.v_num; i++) {
for (int j = 0; j < G.v_num; j++) {
cout << G.R[i][j] << " ";
}
cout << endl;
}
}
int main() {
graph G;
createGraph(G);
printGraph(G);
return 0;
}
```
注意:这里的图是用邻接矩阵来表示的,如果是用邻接表实现的话,输入和打印的方式会有所不同。
用链表输出数组num[]={1,2,3,4}
可以使用链表来输出数组 `num[]={1,2,3,4}`,以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点
struct Node {
int data;
struct Node* next;
};
// 将数组转换为链表
struct Node* arrayToLinkedList(int arr[], int size) {
struct Node* head = NULL;
struct Node* temp = NULL;
struct Node* current = NULL;
for (int i = 0; i < size; i++) {
temp = (struct Node*)malloc(sizeof(struct Node));
temp->data = arr[i];
temp->next = NULL;
if (head == NULL) {
head = temp;
} else {
current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = temp;
}
}
return head;
}
// 打印链表元素
void printLinkedList(struct Node* head) {
struct Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
int num[] = {1, 2, 3, 4};
int size = sizeof(num) / sizeof(num[0]);
// 将数组转换为链表
struct Node* head = arrayToLinkedList(num, size);
// 打印链表元素
printLinkedList(head);
return 0;
}
```
输出结果:
```
1 2 3 4
```
以上代码将数组 `num` 转换为链表,并按顺序打印链表的元素。
阅读全文