HZNUOJ

【数据结构】栈(Stack)的链表实现

Tags:
Time Limit:  1 s      Memory Limit:   128 MB
Submission:301     AC:80     Score:96.13

Description


链表的头插法,如字面意思,每次新插入的节点位置都在头节点的后面。具体操作过程如下:

插入操作:

1.     新建节点NewNode

2.     NewNode->next指向Head->next

3.     Head->next指向NewNode

删除操作:

1.     节点指针TempPtr指向Head->next

2.     Head->next指向Head->next->next

3.     释放TempPtr

 

Tips:链表有两种写法,一种是有头节点的链表,另外一种是没有头节点的链表,两者在插入操作中没有区别,但是在删除操作中,没有头节点的链表需要特判,而有头节点的链表不需要。

 

现在对希望你对于给定的Stack结构体完成以下几类操作:

1.  Status Push(LinkStack *S,SElemType *e)    //将e压入栈中

2.  Status Pop(LinkStack *S,SElemType *e)     //将栈顶元素从栈中取出

3.  Status StackTraverse(LinkStack *S)        //从上到下输出栈内元素

 

详细要求如下:

1.  对于S,将e压入栈中,成为栈顶元素

2.  对于S,将该栈中的栈顶元素取出

3.  对于S,自上向下输出栈内元素,每个元素之间用空格隔开,若栈空则输出空行

 

Tips:主体代码已给出,你只需要提交函数





Input


Samples

input
8 Push 3 Push 2 Pop Pop Pop Push 6 Push 5 ShowAll
output
2 3 ERROR: Stack is empty! 5 6