#include<stdio.h>
#include<malloc.h>
#define datatype char
typedef struct Stacknode
{
datatype data;
struct Stacknode *next;
}LINKSTACK;
LINKSTACK *top;
//1.初始化空栈
void Init_Stack(LINKSTACK **top)
{
*top=NULL;
}
//2.判栈空操作
int Stack_Empty(LINKSTACK *top)
{
if(top==NULL)
return 1;
else
return 0;
}
//3.入栈操作
void Push_Stack(LINKSTACK **top,datatype x)
{
LINKSTACK *p;
p=(LINKSTACK *)malloc(sizeof(LINKSTACK));
p->data=x;
p->next=*top;
*top=p;
}
//4.取栈顶元素操作
datatype Gettop_Stack(LINKSTACK *top)
{
datatype x;
if(top==NULL)
x=NULL;
else
x=top->data;
return x;
}
//5.出栈操作
datatype Pop_Stack(LINKSTACK **top)
{
datatype x;
LINKSTACK *p;
if(*top==NULL)
{
printf("Stack empty\n");
x=NULL;
}
else
{
x=(*top)->data;
p=*top;
*top=(*top)->next;
free(p);
}
return x;
}
/*main()
{
LINKSTACK *top;
char ch;
Init_Stack(&top);
scanf("%c",&ch);
while(ch!='n');
{
Push_Stack(&top,ch);
scanf("%c",&ch);
}
while(!Stack_Empty(top))
{
ch=Gettop_Stack(top);
printf("%c",ch);
Pop_Stack(top);
}
}*/
//十进制转八进制
/* int main()
{
LINKSTACK* top;
int a;
int ch;
Init_Stack(&top);
printf("请输入一个十进制整数:");
scanf("%d", &a);
while (a != 0) {
Push_Stack(&top,a%8);
a = a / 8;
}
printf("它的八进制为:");
while (!Stack_Empty(top)) {
ch = Gettop_Stack(top);
printf("%d", ch);
Pop_Stack(&top);
}
}*/