public class MyArray {
int[] intArr; // int array
int count; // 개수
public int ARRAY_SISE;
public static final int ERROR_NUM = -999999999;
public MyArray() {
count = 0;
ARRAY_SISE = 10;
intArr = new int[ARRAY_SISE];
}
public MyArray(int size) {
count = 0;
ARRAY_SISE = size;
intArr = new int[size];
}
public void addElement(int num) {
if (count >= ARRAY_SISE) {
throw new Exception("array size보다 큼");
}
intArr[count++] = num;
}
public void insertElement(int position, int num) {
if (count >= ARRAY_SISE) {
throw new Exception("array size보다 큼");
}
if (position < 0 || position > count) {
throw new Exception("position의 값이 잘못되었음");
}
for (int i = count - 1; i >= position; i--) {
intArr[++i] = intArr[i];
}
intArr[position] = num;
count++;
}
public int removeElement(int position) {
int ret = ERROR_NUM;
if (isEmpty()) {
throw new Exception("Array가 비어있음");
}
if (position < 0 || position >= count) {
throw new Exception("position의 값이 잘못되었음");
}
ret = intArr[position];
for (int i = position; i < count - 1; i++) {
intArr[i] = intArr[++i];
}
count--;
return ret;
}
public int getSize() {
return count;
}
public boolean isEmpty() {
if (count == 0) {
return true;
} else {
return false;
}
}
public int getElement(int position) {
if (position < 0 || position > --count) {
throw new Exception("검색 위치 오류");
}
return intArr[position];
}
}
class MyListNode {
private String data; // 자료
public MyListNode next; // 다음 노드를 가리키는 링크
public MyListNode() {
data = null;
next = null;
}
public MyListNode(String data) {
this.data = data;
this.next = null;
}
public MyListNode(String data, MyListNode link) {
this.data = data;
this.link = link;
}
public String getData() {
return data;
}
}
public class MyLinkedList {
private MyListNode head;
int count;
public MyLinkedList() {
head = null;
count = 0;
}
public MyListNode addElement(String data) {
MyListNode newNode;
if (head == null) {
newNode = new MyListNode(data);
head = newNode;
} else {
newNode = new MyListNode(data);
MyListNode temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = newNode;
}
count++;
return newNode;
}
public MyListNode insertElement(int position, String data) {
MyListNode tempNode = head;
MyListNode newNode = new MyListNode(data);
if (position < 0 || position > count) {
throw new Exception("위치 오류");
}
if (position == 0) {
newNode.next = head;
head = newNode;
} else {
MyListNode preNode = null;
for (int i = 0; i < position; i++) {
preNode = tempNode;
tempNode = tempNode.next;
}
newNode.next = preNode.next;
preNode.next = newNode;
}
count++;
return newNode;
}
public MyListNode removeElement(int position) {
MyListNode tempNode = head;
if (position >= count) {
throw new Exception("삭제할 위치 오류");
}
if (position == 0) {
head = tempNode.next;
} else {
MyListNode preNode = null;
for (int i = 0; i < position; i++) {
preNode = tempNode;
tempNode = tempNode.next;
}
preNode.next = tempNode.next;
}
count--;
return tempNode;
}
public String getElement(int position) {
MyListNode tempNode = head;
if (position >= count) {
throw new Exception("검색 위치 오류");
}
if (position == 0) {
return head.getData();
}
for (i = 0; i < position; i++) {
tempNode = tempNode.next;
}
return tempNode.getData();
}
public MyListNode getNode(int position) {
MyListNode tempNode = head;
if (position >= count) {
throw new Exception("검색 위치 오류");
}
if (position == 0) {
return head;
}
for (int i = 0; i < position; i++) {
tempNode = tempNode.next;
}
return tempNode;
}
public void removeAll() {
head = null;
count = 0;
}
public int getSize() {
return count;
}
public boolean isEmpty() {
if (head == null) {
return true;
}
return false;
}
}
public class MyStack {
private int top;
private MyArray arrayStack;
public MyStack() {
top = 0;
arrayStack = new MyArray();
}
public MyStack(int size) {
arrayStack = new MyArray(size);
}
public void push(int data) {
if (isFull()) {
throw new Exception("스택이 다 차 있음");
}
arrayStack.addElement(data);
top++;
}
public int pop() {
if (top == 0) {
throw new Exception("스택이 비어있음");
}
return arrayStack.removeElement(--top);
}
public int peek() {
if (top == 0) {
throw new Exception("스택이 비어있음");
}
return arrayStack.getElement(top-1);
}
public int getSize() {
return top;
}
public boolean isFull() {
if (top == arrayStack.ARRAY_SIZE) {
return true;
}
return false;
}
public boolean isEmpty() {
if (top == 0) {
return true;
}
return false;
}
}
interface IQueue {
public void enQueue(String data);
public String deQueue();
}
public class MyQueue extends MyLinkedList implements IQueue {
private MyListNode front;
private MyListNode rear;
public MyQueue() {
front = null;
rear = null;
}
public void enQueue(String data) {
MyListNode newNode;
if (isEmpty()) {
newNode = addElement(data);
front = newNode;
rear = newNode;
} else {
newNode = addElement(data);
rear = newNode;
}
}
public String deQueue() {
if (isEmpty()) {
throw new Exception("큐가 비어있음");
}
String data = front.getData();
front = front.next;
if (front == null) {
rear = null;
}
return data;
}
}
Java & SpringBoot로 시작하는 웹 프로그래밍 강의 : #패스트캠퍼스 #내일배움카드 #K디지털크레딧 #바이트디그리 #자바인강
자바강의 - [7주차] 객체지향 (0) | 2022.03.07 |
---|---|
자바강의 - [6주차] 자바와 자료구조 (2) (0) | 2022.03.01 |
자바강의 - [5주차] 객체와 객체 지향 프로그래밍 핵심 (3) (0) | 2022.02.21 |
자바강의 - [5주차] 객체와 객체 지향 프로그래밍 핵심 (2) (0) | 2022.02.21 |
자바강의 - [4주차] 객체와 객체 지향 프로그래밍 핵심 (1) (0) | 2022.02.14 |
댓글 영역