目录
创建栈结构体
#ifndef __SEQSATCK_H_
#define __SEQSATCK_H_
#define MAX 20
typedef int datatype;
typedef struct
{
datatype data[MAX]; //存储栈的数组
int top; //记录栈顶元素所在的下标
}seqStack;
创建结点函数
//创建
seqStack *stack_create()
{
seqStack *S=(seqStack *)malloc(sizeof(seqStack));
if(NULL==S)
{
printf("创建失败\n");
return NULL;
}
//初始化
S->top=-1;
printf("创建成功\n");
return S;
}
入栈函数
//入栈
void stack_push(seqStack *S,datatype e)
{
//判断逻辑
if(NULL==S || stack_full(S))
{
printf("入栈失败\n");
return ;
}
//先加后压
//S->data[++S->top] = e;
++S->top; //先加
S->data[S->top] = e; //后压
printf("入栈成功\n");
}
遍历函数
//遍历
void stact_show(seqStack *S)
{
//判断逻辑
if(NULL==S || stack_empty(S))
{
printf("遍历失败\n");
return;
}
printf("栈中元素从顶到栈底部>>>");
for(int i=S->top;i>=0;i--)
{
printf("%d",S->data[i]);
}
//printf("\n");
//puts("");
putchar(10);
}
进制转换函数
//进制转换
void data_shift(seqStack *S,int D,int m)
{
if(m!=2 || m!=8 || m!=16)
{
printf("转换失败!请输入正确的进制\n");
return;
}
int a=D;
while(D)
{
stack_push(S,D%m);
D=D/m;
}
printf("%d经过%d进制转换后>>\n",a,m);
stact_show(S);
}
主函数
#include <stdio.h>
#include "seqstack.h"
int main(int argc, const char *argv[])
{
seqStack *S=stack_create();
if(NULL==S)
{
return -1;
}
//调用进制转换函数
data_shift(S,98,7);
return 0;
}
结果
ubuntu@ubuntu:stack$ gcc *.c
ubuntu@ubuntu:stack$ ./a.out
创建成功
入栈成功
入栈成功
入栈成功
98经过8进制转换后>>
栈中元素从顶到栈底部>>>142