一、顺序栈基本函数
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#define max 50
typedef char Datatype;
typedef struct s
{
Datatype* data;
int top;
}Stack;
Stack* InitStack()
{
Stack* s=(Stack*)malloc(sizeof(Stack));
s->data=(Datatype*)malloc(sizeof(Datatype)*max);
s->top=-1;
return s;
}
void push(Stack* s,Datatype da)
{
if(s->top==max-1)
{
return;
}
s->data[++s->top]=da;
}
void pop(Stack* s)
{
if(s->top==-1)
{
return;
}
s->top--;
}
int IsEmpty(Stack* s)
{
return s->top==-1;
}
十进制转二进制
void ttt(int num)
{
Stack* s;
s=InitStack();
printf("二进制为:");
while(num!=0)
{
Datatype ch;
ch=num%2+48;
push(s,ch);
num/=2;
}
while(!IsEmpty(s))
{
printf("%c",s->data[s->top]);
pop(s);
}
}
十进制转八进制
void tte(int num)
{
Stack* s;
s=InitStack();
printf("八进制为:");
while(num!=0)
{
Datatype ch;
ch=num%8+48;
push(s,ch);
num/=8;
}
while(!IsEmpty(s))
{
printf("%c",s->data[s->top]);
pop(s);
}
}
十进制转十六进制
void tts(int num)
{
Stack* s;
s=InitStack();
printf("十六进制为:");
while(num!=0)
{
Datatype ch;
int nums=num%16;
switch(nums)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:ch=nums+48;break;
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:ch=nums+55;
}
push(s,ch);
num/=16;
}
while(!IsEmpty(s))
{
printf("%c",s->data[s->top]);
pop(s);
}
}