编写一个程序,利用栈的基本运算将指定栈中的内容进行逆置。

将栈内的数值弹出之后,如何使用栈的基本运算将栈的值逆置进栈呢?

#include <stdio.h>
#include <malloc.h>
typedef int DataType;
typedef struct stacknode
{
    DataType data;
    struct stacknode *next;
}LinkStack;

LinkStack *InitStack() //初始化 
{
    LinkStack *S;
    S=NULL;
    return S;
}

int EmptyStack(LinkStack *S) //判空 
{
    if(S==NULL)
        return 1;
    else
        return 0;
}

LinkStack *Push(LinkStack *S,DataType x) //入栈 
{
    LinkStack *p;
    p=(LinkStack *)malloc(sizeof(LinkStack));
    p->data=x;
    p->next=S;
    S=p;
    return S;
}

LinkStack *Pop(LinkStack *S,DataType *x) //出栈 
{
    LinkStack *p;
    if(EmptyStack(S))
    {
        printf("栈空");
        return NULL;
    }
    else
    {
        *x=S->data;
        p=S;
        S=S->next;
        free(p);
        return S;
    }
}
 ShowStack(LinkStack *S) //遍历 
{
    LinkStack *p=S;
    if(p==NULL)
        printf("栈空");
    else{
        printf("栈中的值为:");
        while(p!=NULL)
        {
            printf("%d ",p->data);
            p=p->next; 
         } 
    } 
}

main()
{
    int i,n;
    LinkStack *S;
    DataType x;
    printf("请输入要入栈的元素:");
    for(i=0;i<6;i++) //向栈中插入元素 
    {
        scanf("%d",&x);
        S=Push(S,x);
    }
    ShowStack(S);
    for(i=0;i<6;i++) //弹出栈中的元素 
    {
        S=Pop(S,&x);    
    }
    ShowStack(S) ;
    //后续应该如何实现栈元素的逆置?? 
}