编辑代码

#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);
	}
}*/