将栈内的数值弹出之后,如何使用栈的基本运算将栈的值逆置进栈呢?
#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) ;
//后续应该如何实现栈元素的逆置??
}