注册 登录
编程论坛 数据结构与算法

顺序栈的操作

罗文喆 发布于 2012-10-08 17:36, 675 次点击
//顺序栈的操作
#define StackSize 100
typedef int DataType;
typedef struct{
    DataType elem[StackSize];
    int top; //栈顶指针在栈顶元素上
}SqStack;    //顺序栈类型
//初始化空栈
void InitStack(SqStack &s)
{  s.top=-1;   }
//入栈
void Push(SqStack &s,DataType x)
{  if(s.top ==StackSize-1){
    printf("栈满\n"); return;
   }
   s.elem[++s.top]=x;
}
//出栈
void Pop(SqStack &s,DataType &x)
{if(s.top==-1)
printf("栈空")
x=s.elem[s.top--]
}
//取栈顶元素
DataType GetTop(SqStack s)
{  return s.elem[s.top];
}
//判栈空
int StackEmpty(SqStack s)
{   return s.top== -1;
}
void conversion( )//数制转换函数
{ int m,d,x;
  SqStack s;
  InitStack(s);
  printf("请输入一个十进制的数:");
  scanf("%d",&m);
  printf("输入转换成几进制:");
  scanf("%d",&d);
  while(m!=0)
  {  Push(s,m%d);
     m=m/d;
     }
  while(!StackEmpty(s))
  {  Pop(s,x);
     printf("%d",x);
     }
4 回复
#2
zhu2240392012-10-10 21:22
干的漂亮  伙计 加油
#3
海莲2012-10-11 19:45
我们也正在学栈和列队
#4
ChamYu2012-10-11 22:27
你这个程序,只适用于十进制一下的转换,比如十转十六就不好了。
#5
nikobelic2012-10-15 11:14
真厉害
1