栈顶特点和使用方法栈顶特点和使用方法个人作品展示目录栈的定义栈的基本操作栈的存储结构顺序栈链栈栈的定义栈(Stack)是限制在表的一端进行插入和删除运算的线性表生活案例:一叠盘子或一摞书后进先出栈的基本操作方法名说明initStack()初始化操作isEmpty()判空栈操作isFull()判满栈操作push(x)进栈操作pop()出栈操作peek()取栈顶元素操作栈的存储结构顺序栈利用一组地址连续的存储单元依次存放栈的元素,一般用一维数组表示需要附设一个位置指针top来动态地指示栈顶元素链栈采用链表作为存储结构实现设置一个栈顶指针指向栈顶顺序栈publicclassStackS{privateintmaxSize;//栈的容量privatelong[]stackArray;//使用数组表示栈privateinttop;//栈顶指针//初始化栈publicStackS(ints){maxSize=s;stackArray=newlong[maxSize];top=-1;}//入栈publicvoidpush(longj){stackArray[++top]=j;}//出栈publiclongpop(){returnstackArray[top--];}//取栈顶元素publiclongpeek(){returnstackArray[top];}//判空publicbooleanisEmpty(){return(top==-1);}//判断栈是否为满publicbooleanisFull(){return(top==maxSize-1);}}publicclassTestStackS{publicstaticvoidmain(String[]args){StackSstack=newStackS(10);stack.push(20);stack.push(40);stack.push(60);stack.push(80);while(!stack.isEmpty()){longvalue=stack.pop();System.out.println(value);}}}链栈publicclassStackL{privateLinkedListll=newLinkedList();//使用LinkedList表示栈//入栈publicvoidpush(Objecto){ll.addFirst(o);}//出栈publicObjectpop(){returnll.removeFirst();}//取栈顶元素publicObjectpeek(){returnll.getFirst();}//判空publicbooleanempty(){returnll.isEmpty();}//测试链栈publicstaticvoidmain(String[]args){StackLms=newStackL();ms.push("zhangsan");ms.push("lisi");ms.push("wangwu");System.out.println(ms.pop());System.out.println(ms.peek());System.out.println(ms.pop());System.out.println(ms.empty());}}