OddDegreeList.java 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package pathgame.algorithm;
  2. import java.util.ArrayList;
  3. public class OddDegreeList {
  4. private ArrayList<Integer> items = new ArrayList<>();
  5. private ArrayList<Boolean> itemUsed = new ArrayList<>();
  6. public void add(int vertex) {
  7. items.add(vertex);
  8. itemUsed.add(false);
  9. }
  10. public int size() {
  11. return items.size();
  12. }
  13. public void resetUsed() {
  14. for(int i = 0; i < itemUsed.size(); i++) {
  15. itemUsed.set(i, false);
  16. }
  17. }
  18. public int getUnused(int offSet) {
  19. return items.get(getOffsetPos(offSet));
  20. }
  21. public int makeOffsetUsed(int offSet) {
  22. int pos = getOffsetPos(offSet);
  23. itemUsed.set(pos, true);
  24. return pos;
  25. }
  26. public void makePosUsed(int pos) {
  27. itemUsed.set(pos, true);
  28. }
  29. public void makeUnused(int pos) {
  30. itemUsed.set(pos, false);
  31. }
  32. private int getOffsetPos(int offSet) {
  33. int foundValid = 0;
  34. for (int i = 0; i < items.size(); i++) {
  35. if (!itemUsed.get(i)) {
  36. if (offSet == foundValid) {
  37. return i;
  38. /*itemUsed.set(i, true);
  39. return items.get(i);*/
  40. }
  41. foundValid++;
  42. }
  43. }
  44. return -1;
  45. }
  46. }