环形网络的增加边的设计

分别针对8节点和16节点的环形网络,在每个节点上增加额外一条边并保持节点数不变的情况下(度为3),一共有多少种方法

环形边是通过其共享曲面按顺序连接的多边形边的路径。通过环形边选择,可以在多边形网格中选择多条边,而不必逐个选择每条边。
选择环形边

在场景视图中,在多边形网格上单击鼠标右键,然后选择“边”(Edge)。
在想要显示环形边的地方,单击多边形网格的某条边。
按住 Shift 键并双击沿同一环形路径的平行边。
环形路径中的所有边都会被选中。

选择部分环形边

在场景视图中,在多边形网格上单击鼠标右键,然后选择“边”(Edge)。
在想要开始选择环形边的位置,单击多边形网格的边。
按住 Shift 键并双击沿同一环形路径的另一条边。
会选择这两条边之间的所有边。

具体代码实现

public class CircularQueue<T> {
    //属性
    private int front;//队头指针
    private int rear;//队尾指针
    private int maxSize;//队列最大容量
    private int size;//队列数据个数
    private Object[] queue;//队列数组

    //空参构造器
    public CircularQueue() {
        front = -1;
        rear = -1;
        maxSize = 16;
    }

    //指定容量构造器
    public CircularQueue(int maxSize) {
        this();
        this.maxSize = maxSize;
    }

    //获取队列数据个数
    public int getSize() {
        return size;
    }

    //添加数据
    public void add(T t) {
        //懒汉式:要添加数据了才创建数组
        if (queue == null) {
            queue = new Object[maxSize];
        }
        //判断队列是否已满
        if (size >= maxSize) {
            throw new RuntimeException("队列已满");
        }
        //走到这说明队列没满,考虑边界情况
        if (rear == maxSize - 1) {
            rear = -1;//循环到队伍开头,形成闭环
        }
        //真正添加数据的操作
        queue[++rear] = t;
        //数据个数加一
        size++;
    }

    //弹出数据
    public T pop() {
        //判断队列是否为空
        if (queue == null || queue.length == 0 || size == 0) {
            throw new RuntimeException("队列为空");
        }
        //边界情况
        if (front == maxSize - 1) {
            front = -1;
        }
        T t = (T) queue[++front];
        queue[front] = null;
        size--;
        return t;
    }

    //重写toString()
    @Override
    public String toString() {
        return "CircularQueue{" +
                "queue=" + Arrays.toString(queue) +
                '}';
    }
}