Similar to linear tables, stacks also have two storage structures: sequential Storage Structure and linked list storage structure. The stack sequence storage structure is also called sequence stack, which is a sequence table with limited operation.
#pragma onceclass stack{public:stack(void);stack(int maxsize);~stack(void);private:int *m_list;int m_maxsize;int m_top;public:bool push(int value);bool pop();bool top(int *value);bool empty();bool full();int size();void output();};#include "StdAfx.h"#include "stack.h"stack::stack(void){m_maxsize = 10;m_list = new int[m_maxsize];for(int i=0; i<m_maxsize; i++){m_list[i] = 0xFFFFFFFF;}m_top = -1;}stack::stack(int maxsize){m_maxsize = maxsize;m_list = new int[m_maxsize];for(int i=0; i<m_maxsize; i++){m_list[i] = 0xFFFFFFFF;}m_top = -1;}stack::~stack(void){delete []m_list;m_top = -1;m_list = NULL;}bool stack::push(int value){if (!full()){m_list[m_top] = value;m_top++;return true;}return false;}bool stack::pop(){if(!empty()){m_top--;return true;}return false;}bool stack::top(int *value){if (!empty()){*value = m_list[m_top - 1];return true;}*value = 0xFFFFFFFF;return false;}bool stack::empty(){if (m_top == -1){return true;}return false;}bool stack::full(){if (m_top + 1 == m_maxsize){return true;}return false;}int stack::size(){return m_top + 1;}void stack::output(){printf("---------------------------------\n");printf("stack information:\n");printf("maxsize=%d\n", m_maxsize);printf("top=%d\n", m_top);for(int i=0; i<m_top; i++){printf("index%d=%d\n", i, m_list[i]);}}
// Sequstack. cpp: Defines the entry point for the console application. // # include "stdafx. h "# include" stack. h "int _ tmain (int argc, _ TCHAR * argv []) {stack mystack (10); // inbound stack 0 --- 9/* for (int I = 0; I <10; I ++) {mystack. push (I);} if (mystack. full () printf ("stack is full \ n"); printf ("stack size = % d \ n", mystack. size (); // output stack for (int I = 0; I <10; I ++) {int value = 0; mystack. top (& value); mystack. pop (); printf ("pop value = % d \ n", value);} if (mystack. empty () printf ("stack is empty \ n"); printf ("stack size = % d \ n", mystack. size (); */mystack. push (8); mystack. push (9); mystack. push (10); mystack. push (11); printf ("size = % d \ n", mystack. size (); int count = mystack. size (); for (int I = 0; I <count; I ++) {int value = 0; mystack. top (& value); printf ("value = % d \ n", value); mystack. pop () ;}getchar (); return 0 ;}