¾ðÊó²Ê³Ø¤ò³Ø¤ÖÂç³ØÀ¸¤¬¥×¥í¥°¥é¥ß¥ó¥°(C¸À¸ì,Java¤Ê¤É)¡¢¥Í¥Ã¥È¥ï¡¼¥¯¡¢»ñ³Ê»î¸³(¾ðÊó½èÍýµ»½Ñ¼Ô»î¸³,CCNA)¤Ê¤É¤Ë´Ø¤¹¤ëµ»ö¤ò½ñ¤¤¤Æ¤¤¤Þ¤¹¡£
Âè1²ó¤È¤Ê¤ëÁ°²ó¥¨¥ó¥È¥ê¡ÖJava¤Ç³Ø¤Ö¥Ç¡¼¥¿¹½Â¤ÆþÌç01¡Ý¥¹¥¿¥Ã¥¯(1/3)¡Ý´ðËÜÁàºî¤Î¼ÂÁõ¡×¤Ç¤Ï¥¹¥¿¥Ã¥¯¤¬È÷¤¨¤ë´ðËÜŪ¤ÊÁàºî¤Î¤ß¤ò¼ÂÁõ¤·¤Þ¤·¤¿¡£
¤·¤«¤·¡¢Á°²ó¤Î¼ÂÁõ¤Ë¤Ï
¤È¤¤¤¦ÌäÂ꤬¤¢¤ê¤Þ¤·¤¿¡£¤½¤³¤Ç¡¢º£²ó¤Ï¼¡¤Î¤è¤¦¤Ê²þÎɤò¤·¤Þ¤¹¡£
public class MyStack<T> {
private T[] stack;
private int sp; /* stack pointer */
private final static int DEFAULT_CAPACITY = 10;
private int capacity;
public MyStack() {
this(DEFAULT_CAPACITY);
}
public MyStack(int initialCapacity) {
capacity = initialCapacity;
stack = (T[]) new Object[initialCapacity];
}
public void push(T item) {
stack[sp++] = item;
capacityCheck();
}
public T pop() {
return stack[--sp];
}
private void capacityCheck() {
if(sp >= capacity)
expandCapacity();
}
private void expandCapacity() {
capacity *= 2;
Object[] oldStack = stack;
stack = (T[]) new Object[capacity];
System.arraycopy(oldStack, 0, stack, 0, sp);
}
}
°ú¿ô¤¬°Û¤Ê¤ë¤â¤¦1¤Ä¤Î¥³¥ó¥¹¥È¥é¥¯¥¿ MyStack(int initialCapacity) ¤Ë¥Ç¥Õ¥©¥ë¥È¤ÎÍÆÎÌ(DEFAULT_CAPACITY(=10))¤òÅϤ·¤Æ¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
°ú¿ô¤Ë¤È¤Ã¤¿Ãͤò¥¹¥¿¥Ã¥¯¤ÎÍÆÎÌ¡ÊÆâÉô¤ÇÊÝ»ý¤¹¤ëÇÛÎó¤Î¥µ¥¤¥º¡Ë¤Ë¤·¤Þ¤¹¡£
T·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ê¡¢¤½¤ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤߤޤ¹¡£¤½¤Î¸å¡¢¥¹¥¿¥Ã¥¯¡Ê¤ÎÆâÉô¤ËÊÝ»ý¤¹¤ëÇÛÎó¡Ë¤¬¤¤¤Ã¤Ñ¤¤¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤¤«³Îǧ¤·¤Þ¤¹¡ÊcapacityCheck()¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡Ë¡£
¥¹¥¿¥Ã¥¯¤Î°ìÈÖ¾å¤Ë¤¢¤ëÍ×ÁǤò¼è¤ê½Ð¤·¤Þ¤¹¡£
¥¹¥¿¥Ã¥¯¡Ê¤ÎÆâÉô¤ËÊÝ»ý¤¹¤ëÇÛÎ󤬤¤¤Ã¤Ñ¤¤¤Ë¤Ê¤Ã¤Æ¤¤¤ë(sp >= capacity)¤Ê¤é¤Ð¡¢¤½¤ì¤òÂ礤¯¤¹¤ë¥á¥½¥Ã¥ÉexpandCapacity()¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£¤³¤ì¤é¤Î¥á¥½¥Ã¥É¤Ï¥¯¥é¥¹Æâ¤Î¥á¥½¥Ã¥É¤«¤é¤·¤«¸Æ¤Ó½Ð¤µ¤Ê¤¤¤Î¤Ç¡¢¥¢¥¯¥»¥¹»ØÄê»Ò¤Ïprivate¤Ë¤·¤Æ¤¢¤ê¤Þ¤¹¡£
¥¹¥¿¥Ã¥¯¡Ê¤ÎÆâÉô¤ËÊÝ»ý¤¹¤ëÇÛÎó¡Ë¤ÎÍÆÎ̤òÁý¤ä¤·¤Þ¤¹¡£¤È¤¤¤Ã¤Æ¤â¡¢º£»È¤Ã¤Æ¤¤¤ëÇÛÎó¤òÂ礤¯¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¤Î¤Ç¡¢¿·¤·¤¤ÇÛÎó¤òºî¤ê¡¢System.arraycopy()¤Ç¥Ç¡¼¥¿¤ò¤½¤³¤Ë¥³¥Ô¡¼¤·¤Þ¤¹¡£
/* ¡ûÀµ¤·¤¤ */
MyStack<String> sStack = new MyStack<String>();
stack.push("hoge");
/* ¡ûÀµ¤·¤¤ */
MyStack<Integer> iStack = new MyStack<Integer>();
stack.push(10);
/* ¡ß´Ö°ã¤¤ */
MyStack<int> iStack = new MyStack<int>();
stack.push(10);
int·¿¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ï¤Ê¤¤¤Î¤ÇInteger¤È¤·¤Æ°·¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤À¤·¡¢¥ª¡¼¥È¥Ü¥¯¥·¥ó¥°/¥¢¥ó¥Ü¥¯¥·¥ó¥°¤Ë¤è¤ê¡¢¤¤¤Ã¤¿¤óIntegerÍѤΥ¹¥¿¥Ã¥¯¤òºî¤Ã¤Æ¤·¤Þ¤¨¤Ð¡¢¡Ê¸«¤«¤±¾å¡Ëint·¿¤Î¥Ç¡¼¥¿¤ò¤½¤Î¤Þ¤Þ½Ð¤·Æþ¤ì¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¥Æ¡¼¥Þ:¥×¥í¥°¥é¥ß¥ó¥° - ¥¸¥ã¥ó¥ë:¥³¥ó¥Ô¥å¡¼¥¿ - ¥½¡¼¥·¥ã¥ë¥Ö¥Ã¥¯¥Þ¡¼¥¯:
![]()
Author:TBVector
»ä¤Î¥µ¥¤¥È
¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ÈRSS
ͧã¤Î¥µ¥¤¥È
¤¢¤ï¤»¤ÆÆÉ¤ß¤¿¤¤
¤Ï¤Æ¤Ê¥ê¥ó¥°