#include "Stdio.h"
#include "Conio.h"
#include <malloc.h>
#define STACK_INIT_SIZE 100;
#define STACK_INCREMENT 10;
typedef struct node
{
int data;
node *next;
}node;
typedef struct stack
{
node * base;
node * top;
int stackSize;
}Stack;
Stack *createStack()
{
Stack *s = (Stack *) malloc( sizeof(Stack) );
s->top = s->base = NULL;
s->stackSize = 0;
return s;
}
Stack *push(Stack * s, int data)
{
node *newNode = (node*) malloc( sizeof(node) );
newNode->data = data;
newNode->next = s->top;
s->top = newNode;
s->stackSize++;
return s;
}
node *pop(Stack *s)
{
if( s->base == s->top)
{
printf("The Stack is empty!/n");
return s->top;
}
node *newNode = s->top;
s->top = s->top->next;
s->stackSize --;
return newNode;
}
void printStack(Stack *s)
{
if( s->base == s->top)
{
printf("The Stack is empty!/n");
return ;
}
node *newNode = s->top;
while(newNode != NULL)
{
printf("newNode data: %d/n", newNode->data);
newNode = newNode->next;
}
}
int main(void)
{
printf("/n------------------------------------------/n");
printf(" 栈演示程序 /n");
printf("------------------------------------------/n/n");
Stack *s = createStack();
int x = 0;
while(1)
{
printf("Please input the data:");
scanf("%d",&x);
if(x == 0)
break;
push(s, x);
}
printf("/nThe data of Stack/n--------------------------------------------------------------------------/n");
printStack(s);
node *n = pop(s);
printf("/nThe pop node data: %d/n--------------------------------------------------------------------------/n", n->data);
printf("/nAfter pop the data of Stack/n--------------------------------------------------------------------------/n");
printStack(s);
getch();
return 0;
}